js根据key值,刷选出符合条件的项,组成新的数组

题目描述

现有一个数组,比如 let arr = ["香蕉","苹果","梨"];,然后又一个对象数组:

let arr = ["香蕉","苹果","梨"];


// 对象数组
let allArr = [
    {id:'001',name:'苹果',price:'2'},
    {id:'002',name:'香蕉',price:'1'},
    {id:'003',name:'梨',price:'20'},
    {id:'004',name:'西瓜',price:'22'},
    {id:'005',name:'草莓',price:'26'}
];


// 最终结果:新数组,根据arr的值,筛选出符合条件的对象,组成新的数组;
// 要求顺序一致
let finalArr = [
    {id:'002',name:'香蕉',price:'1'},
    {id:'001',name:'苹果',price:'2'},
    {id:'003',name:'梨',price:'20'}
];
阅读 3.6k
3 个回答
   arr.forEach((a) => {
       allArr.forEach((all) => {
          if(a === all.name){
             finalArr.push(all);
          }
       })
    })
const finalArr = allArr
  .filter(a => arr.includes(a.name))
  .sort((a, b) => arr.indexOf(a.name) - arr.indexOf(b.name))

allArr.filter(i => arr.some(_i => i.name === _i)).sort((a, b) => arr.indexOf(a.name) - arr.indexOf(b.name) >= 0 ? 1 : -1)

推荐问题