2016-08-01 118 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);