2016-08-01 122 views
1

我有一个数组如下:地图和过滤功能

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=2id=5, listID=2的汽车。

我试图通过cardContent进行映射,然后仅筛选那些carC和来自allCars的列表ID。但没有成功。

我想是这样的

​​

这里是jsfiddle

有什么建议吗?

回答

1

您可以用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);

0

试试这个:

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);