首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法通过二维迭代更新元素数组

无法通过二维迭代更新元素数组
EN

Stack Overflow用户
提问于 2018-04-19 22:04:47
回答 2查看 35关注 0票数 1

我有两个对象数组,第一个数组(printerChart,大约80个元素)由以下类型的对象组成:

代码语言:javascript
复制
[{
    printerBrand: 'Mutoh',
    printerModel: 'VJ 1204G',
    headsBrand: 'Epson',
    headType: '',
    compatibilty: [
      'EDX',
      'DT8',
      'DT8-Pro',
      'ECH',
    ],
  },
   ....
]

第二个数组(项,大约500个元素)由以下类型的对象组成:

代码语言:javascript
复制
[
        {
            "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。我试过了,但不知何故迭代不能正确进行。这是我尝试过的:

代码语言:javascript
复制
items.forEach((item) => {
      printerChart.forEach((printer) => {
        if (printer.compatibilty.some(compatibleElem => (
          item.name.includes(compatibleElem)))) {
          item.printerBrand = printer.printerBrand;
        } else {
          item.printerBrand = '';
        }
      });
    });

我做错了什么?

EN

回答 2

Stack Overflow用户

发布于 2018-04-19 22:14:51

你做了

代码语言:javascript
复制
items.items.forEach(...)

你不是应该做

代码语言:javascript
复制
items.forEach(...)
票数 0
EN

Stack Overflow用户

发布于 2018-04-19 22:26:31

我建议使用空字符串初始化item.printerBrand,并使用some的嵌套方法来获取品牌并退出循环(如果找到)。

这可以防止获取空字符串,即使有要分配的品牌。

代码语言:javascript
复制
items.forEach((item) => {
    item.printerBrand = '';
    printerChart.some(printer => {
        if (printer.compatibilty.some(compatibleElem => item.name.includes(compatibleElem))) {
            item.printerBrand = printer.printerBrand;
            return true;
        }
    });
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49923137

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档