假设第一个数组是['123','234','567'],
第二个数组是[{id:'111',name:'小明'},{id:'123',name:'菜虚鲲'},{id:'234',name:'小张'}]
我想得到两个数组交集并且是以第二种数组的展示方式,
比如得到 [{id:'123',name:'菜虚鲲'},{id:'234',name:'小张'}]这样的结果
假设第一个数组是['123','234','567'],
第二个数组是[{id:'111',name:'小明'},{id:'123',name:'菜虚鲲'},{id:'234',name:'小张'}]
我想得到两个数组交集并且是以第二种数组的展示方式,
比如得到 [{id:'123',name:'菜虚鲲'},{id:'234',name:'小张'}]这样的结果
let list = ['123', '234', '567']
let arr = [{ id: '111', name: '小明' }, { id: '123', name: '菜虚鲲' }, { id: '234', name: '小张' }]
let result = []
for (let item of arr ) {
if (list.includes(item.id)) result.push(item)
}
console.log(result);
本文参与了SegmentFault 思否面试闯关挑战赛,欢迎正在阅读的你也加入。
下面的几种方法可以实现你的需求。
//定义两个数组
var arr1 = ['123','234','567'];
var arr2 = [{id:'111',name:'小明'},{id:'123',name:'菜虚鲲'},{id:'234',name:'小张'}];
//使用array.some()和array.filter()方法得到交集,并保留对象格式
var result = arr2.filter(function(item){
return arr1.some(function(id){
return id === item.id;
});
});
//打印结果
console.log(result); //输出[{id:'123',name:'菜虚鲲'},{id:'234',name:'小张'}]
//定义两个数组
var arr1 = ['123','234','567'];
var arr2 = [{id:'111',name:'小明'},{id:'123',name:'菜虚鲲'},{id:'234',name:'小张'}];
//创建一个Set对象存储arr1中的值
var set1 = new Set(arr1);
//使用Array.from()和array.find()方法得到交集,并保留对象格式
var result = Array.from(set1).map(id => arr2.find(item => item.id === id));
//打印结果
console.log(result); //输出[{id:'123',name:'菜虚鲲'},{id:'234',name:'小张'}]
//定义两个数组
var arr1 = ['123','234','567'];
var arr2 = [{id:'111',name:'小明'},{id:'123',name:'菜虚鲲'},{id:'234',name:'小张'}];
//使用reduce()和concat()方法得到交集
var intersection = [arr1, arr2.map(item => item.id)].reduce((a, b) => a.filter(c => b.includes(c)));
//使用array.map()和array.indexOf()方法保留对象格式
var result = intersection.map(id => arr2[arr2.map(item => item.id).indexOf(id)]);
//打印结果
console.log(result); //输出[{id:'123',name:'菜虚鲲'},{id:'234',name:'小张'}]
基本的数组过滤:
var arr1 = ['123', '234', '567']
var arr2 = [{id:'111',name:'小明'}, {id:'123',name:'菜虚鲲'}, {id:'234',name:'小张'}]
var res = arr2.filter(item => arr1.includes(item.id))
本文参与了SegmentFault 思否面试闯关挑战赛,欢迎正在阅读的你也加入。
可以使用filter和some方法来实现这个功能。filter方法可以过滤出第一个数组中与第二个数组中id相同的元素,some方法可以判断第二个数组中是否存在该元素。代码如下:
const arr1 = ['123','234','567'];
const arr2 = [{id:'111',name:'小明'},{id:'123',name:'菜虚鲲'},{id:'234',name:'小张'}];
const result = arr2.filter(item2 => arr1.some(item1 => item1 === item2.id));
console.log(result);
输出结果为:[{id:'123',name:'菜虚鲲'},{id:'234',name:'小张'}]
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
3 回答5.1k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决
.filter() 一下就好了呀?