我有两个对象数组,第一个数组(printerChart,大约80个元素)由以下类型的对象组成:
[{
printerBrand: 'Mutoh',
printerModel: 'VJ 1204G',
headsBrand: 'Epson',
headType: '',
compatibilty: [
'EDX',
'DT8',
'DT8-Pro',
'ECH',
],
},
....
]第二个数组(项,大约500个元素)由以下类型的对象组成:
[
{
"customData": {
"brand": {
"value": {
"type": "string",
"content": "hp"
},
"key": "brand"
},
"printer": {
"value": {
"type": "string",
"content": "c4280"
},
"key": "printer"
}
},
"name": "DT8 XLXL",
"image": {
"id": "zLaDHrgbarhFSnXAK",
"url": "https://xxxxxxx.net/images/xxxxxx.jpg"
},
"brandId": "xxxxx",
"companyId": "xxxx",
"createdAt": "2018-03-26T14:39:47.326Z",
"updatedAt": "2018-04-09T14:31:38.169Z",
"points": 60,
"id": "dq2Zezwm4nHr8FhEN"
},
...
]我想要做的是遍历第二个数组,如果第一个数组的“兼容性”元素中包含了项名称的一部分(即DT8),我想从第一个数组的元素中包含一个新的属性: printerBrand。我试过了,但不知何故迭代不能正确进行。这是我尝试过的:
items.forEach((item) => {
printerChart.forEach((printer) => {
if (printer.compatibilty.some(compatibleElem => (
item.name.includes(compatibleElem)))) {
item.printerBrand = printer.printerBrand;
} else {
item.printerBrand = '';
}
});
});我做错了什么?
发布于 2018-04-19 22:14:51
你做了
items.items.forEach(...)你不是应该做
items.forEach(...)发布于 2018-04-19 22:26:31
我建议使用空字符串初始化item.printerBrand,并使用some的嵌套方法来获取品牌并退出循环(如果找到)。
这可以防止获取空字符串,即使有要分配的品牌。
items.forEach((item) => {
item.printerBrand = '';
printerChart.some(printer => {
if (printer.compatibilty.some(compatibleElem => item.name.includes(compatibleElem))) {
item.printerBrand = printer.printerBrand;
return true;
}
});
});https://stackoverflow.com/questions/49923137
复制相似问题