js算法问题

let arr1 = [
    {
        label:'张三',
        value:'1'
    },
    {
        label:'李四',
        value:'2'
    },
    {
        label:'王五',
        value:'3'
    }
 ]

let arry2 = ['1','2']

let resArry = ?

console.log(resArry)   //输出  张三、李四

arry2中的值能对应到arry1中的value 则放入resArry中 最终打印出张三、李四

这个怎么实现呢?

阅读 2.7k
6 个回答
let resArry = arr1.filter(o=>arry2.indexOf(o.value)>-1).map(o=>o.label);
console.log(resArry);
新手上路,请多包涵

你写循环遍历一遍不就行了,还是我没看懂你啥意思

let obj1 = arr1.reduce((iter, val) => (iter[val.value] = val.label, iter), {});
let resArry = arry2.map(v => obj1[v]);
var arr1 = [
  {
    label: '张三',
    value: '1'
  },
  {
    label: '李四',
    value: '2'
  },
  {
    label: '王五',
    value: '3'
  }
]

var arr2 = ['1', '2']
var resArry=[];
for(var i=0;i<arr1.length;i++){
  for(var j=0;j<arr2.length;j++){
    if(arr2[j]==arr1[i].value){
      arrtemp.push(arr1[i].label)
    }
  }
}
console.log(resArry);

参考ezmo的改了下

let resArry = arr1.filter(o=>arry2.includes(o.value)).map(o=>o.label).join('、')
新手上路,请多包涵

var arr1 = [

{
    label:'张三',
    value:'1',
},
{
    label:'李四',
    value:'2',
},
{
    label:'王五',
    value:'3',
}

];

var arr2 = ['1','2'];

var resArry = [];

for(var item of arr1){

for(var str of arr2){
    if(str == item.value){
        resArry.push(item.label)
    }
}

}
console.log(resArry)

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题