Javascript 匹配两个数组以创建第三个数组
我有一个数组:Javascript 匹配两个数组以创建第三个数组,javascript,jquery,arrays,object,match,Javascript,Jquery,Arrays,Object,Match,我有一个数组: var array = [black, white] 和一个对象: var object = [ {color: black, hex: #000000}, {color: white, hex: #ffffff}, {color: red, hex: #ff0000} ] 我想做的是从阵列和对象中匹配的颜色创建一个新对象,因此在本例中,新对象将是: var object = [ {color: black, hex: #000000},
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}
]
你可以使用
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"}]
你可以这样做:
var数组=['black','white']
变量对象=[
{颜色:'黑色',十六进制:'#000000'},
{颜色:'白色',十六进制:'#ffffff'},
{颜色:'红色',十六进制:'#ff0000'}
]
var result=object.filter(函数(条目){
返回数组.indexOf(entry.color)>-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);
注意:我不得不在你的一些示例数据中添加引号。过滤器
和包括
(IE不支持)@j08691 IE>=9支持过滤器
和索引
。OP可以利用这一点,如果他想在ESF中编写代码,您可以创建一个新的数组objectFiltered,循环对象并对数组进行条件检查。indexOf(object[i].color)>-1如果为true,则将当前索引推送到ObjectFlitterd。