美文网首页
javascript – 将一个对象数组根据另一个数组的顺序进行

javascript – 将一个对象数组根据另一个数组的顺序进行

作者: 海山城 | 来源:发表于2019-07-16 19:32 被阅读0次

    有一个对象数组:

    const origin = [{ id: 4, name: 'name4' }, { id: 3, name: 'name3' }, { id: 9, name: 'name9' }, { id: 1, name: 'name1' }]
    

    有另一个对象数组,需要按此数组里面的某个字段进行排序

    const sortKey =  [{sortId: 3, age: '333' }, { sortId: 1,age: '111'}, { sortId: 9, age: '999' }, { sortId: 4, age: '444' }]
    

    根据sortKey的sortId,如何将第一个对象数组(origin)与第二个对象数组的排序相匹配?
    结果应该是:

    const origin = [{ id: 3, name: 'name3' }, { id: 1, name: 'name1' }, { id: 9, name: 'name9' }, { id: 4, name: 'name4' }]
    

    方法:用sort以及indexOf解决了这个问题

    const result = origin.sort(function(a, b){
      return sortKey.map(s => s.sortId).indexOf(a.id) < sortKey.map(s => s.sortId).indexOf(b.id) ? -1 : 1;
    });
    // result: [{ id: 3, name: 'name3' }, { id: 1, name: 'name1' }, { id: 9, name: 'name9' }, { id: 4, name: 'name4' }]
    

    相关文章

      网友评论

          本文标题:javascript – 将一个对象数组根据另一个数组的顺序进行

          本文链接:https://www.haomeiwen.com/subject/waqxlctx.html