地图和过滤功能
问题描述:
我有一个数组如下:地图和过滤功能
let allCars = [
{
id: 1,
listID: 2,
name: "CAR 1",
url: "Fixed 2016-W24"
}, {
id: 2,
listID: 2,
name: "CAR 2",
url: "Fixed 2016-W24"
}, {
id: 3,
listID: 3,
name: "CAR 3",
url: "Fixed 2016-W24"
},{
id: 1,
listID: 1,
name: "CAR 4",
url: "Fixed 2016-W24"
},{
id: 5,
listID: 2,
name: "CAR 5",
url: "Fixed 2016-W24"
}
];
和我也有汽车的数组,它是在卡中,这样的事情:
let cardContent = [
{
carID: 1,
listID: 2
},
{
carID: 5,
listID: 2
}
]
我m试图从allCars获得id=1, listID=2
和id=5, listID=2
的汽车。
我试图通过cardContent进行映射,然后仅筛选那些carC和来自allCars的列表ID。但没有成功。
我想是这样的
这里是jsfiddle
。
有什么建议吗?
答
您可以用Array#filter
做到这一点,Array#some
let allCars = [{"id":1,"listID":2,"name":"CAR 1","url":"Fixed 2016-W24"},{"id":2,"listID":2,"name":"CAR 2","url":"Fixed 2016-W24"},{"id":3,"listID":3,"name":"CAR 3","url":"Fixed 2016-W24"},{"id":1,"listID":1,"name":"CAR 4","url":"Fixed 2016-W24"},{"id":5,"listID":2,"name":"CAR 5","url":"Fixed 2016-W24"}];
let cardContent = [{"carID":1,"listID":2},{"carID":5,"listID":2}]
const result = allCars.filter(function(e) {
return cardContent.some(function(a) {
return e.id == a.carID && e.listID == a.listID;
})
})
console.log(result);
答
试试这个:
let allCars = [
{
id: 1,
listID: 2,
name: "CAR 1",
url: "Fixed 2016-W24"
}, {
id: 2,
listID: 2,
name: "CAR 2",
url: "Fixed 2016-W24"
}, {
id: 3,
listID: 3,
name: "CAR 3",
url: "Fixed 2016-W24"
},{
id: 1,
listID: 1,
name: "CAR 4",
url: "Fixed 2016-W24"
},{
id: 5,
listID: 2,
name: "CAR 5",
url: "Fixed 2016-W24"
}
];
let cardContent = [
{
carID: 1,
listID: 2
},
{
carID: 5,
listID: 2
}
]
const output = allCars.filter(car => cardContent.some(card => (car.id === card.carID && car.listID === card.listID)));
console.log(output);