我正在使用Typescript来解决以下问题。我想在列表中搜索不是简单字母或数字的对象。
以下是两个阵列。 我希望在不使用任何第三方库的情况下在单独的列表中获取常见对象。
firstArray = [
{
"id": 4,
"name": "Tata"
},
{
"id": 11,
"name": "Maruti"
},
{
"id": 14,
"name": "Mahindra"
}
]
secondArray = [
{
"id": 4,
"name": "Tata"
},
{
"id": 11,
"name": "Maruti"
},
{
"id": 15,
"name": "Hyundai"
},
{
"id": 21,
"name": "Honda"
}
]
// Get Common Elements
// I am getting blank array as output
console.log(firstArray.filter(( make ) => secondArray.includes( make)));

是否有良好的功能或方法来找出公共元素?
答案 0 :(得分:5)
您可以将array#filter
与array#some
一起使用。对于第一个数组中的每个对象,检查另一个数组中是否存在id
和name
。
const firstArray = [{ "id": 4, "name": "Tata" }, { "id": 11, "name": "Maruti" }, { "id": 14, "name": "Mahindra" } ],
secondArray = [{ "id": 4, "name": "Tata" }, { "id": 11, "name": "Maruti" }, { "id": 15, "name": "Hyundai" }, { "id": 21, "name": "Honda" } ],
result = firstArray.filter(o => secondArray.some(({id,name}) => o.id === id && o.name === name));
console.log(result);

答案 1 :(得分:2)
对于ES6,您也可以尝试集,
为了演示,
const thirdArray = [...new Set([...firstArray ,...secondArray])];