无法通过 2D 迭代更新元素数组



我有两个对象数组,第一个数组(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 = '';
        }
      });
    });

我做错了什么?

你这样做

items.items.forEach(...)

你不应该这样做吗

items.forEach(...)

我建议用空字符串初始化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;
        }
    });
});

相关内容

  • 没有找到相关文章

最新更新