2016-11-22 3 views
-4

У меня есть массив:Matching два массива, чтобы создать третий массив

var array = [black, white] 

и объект:

var object = [ 
    {color: black, hex: #000000}, 
    {color: white, hex: #ffffff}, 
    {color: red, hex: #ff0000} 
] 

То, что я хочу сделать, это создать новый объект из цветов, которые соответствуют в обоих массив и объект, поэтому в данном примере новый объект будет:

var object = [ 
    {color: black, hex: #000000}, 
    {color: white, hex: #ffffff} 
] 
+0

Вы можете создать новый объект arrayFiltered, перебрать объект и выполнить условную проверку на array.indexOf (object [i] .color)> -1, если true, а затем нажать текущий индекс на objectFlitered. –

ответ

3

Вы можете filter объект Thusly:

var array = ['black', 'white'] 
 

 
var object = [ 
 
    {color: 'black', hex: '#000000'}, 
 
    {color: 'white', hex: '#ffffff'}, 
 
    {color: 'red', hex: '#ff0000'} 
 
] 
 

 
var result = object.filter(function(entry) { 
 
    return array.indexOf(entry.color) > -1; 
 
}) 
 

 
console.log(result);

4

Вы можете использовать filter для этой цели ,

var arr = ["black", "white"]; 
var obj = [ 
    {color: "black", hex: "#000000"}, 
    {color: "white", hex: "#ffffff"}, 
    {color: "red", hex: "#ff0000"} 
]; 

var res = obj.filter(itm => arr.includes(itm.color)); 
console.log(res); //[{color: "black", hex: "#000000"}, {color: "white", hex: "#ffffff"}] 
+1

'filter' и' includes' (какой IE не поддерживает) – j08691

+1

фильтр работает ... –

+0

@ j08691 IE> = 9 поддерживает 'filter' и' indexOf'. OP может использовать это, если он хочет написать код в среде ES <6. –

-1

Используйте фильтр:

var array = ['black', 'white']; 
var objectArray = [ 
    {color: 'black', hex: '#000000'}, 
    {color: 'white', hex: '#ffffff'}, 
    {color: 'red', hex: '#ff0000'} 
]; 

var result = objectArray.filter(function(item) { 
    return array.some(function(i) { 
     return i === item.color; 
    }) 
}); 


console.log(result); 

NB мне пришлось добавить кавычки, чтобы некоторые из ваших примеров данных ,

Смежные вопросы