首页 > 解决方案 > 如何从 JS 对象创建新的 JS 数组

问题描述

我想从一个对象创建新的 JS 数组。我解释了我的情况如下。

对象1

obj1 = {
  MMJ_KKL: {CODE: "SSW", YARN: 4500, WARN: "NBVC"},
  KKN_AAS: {CODE: "NNH", YARN: 1540, WARN: "MHYT"},
  LLK_PPO: {CODE: "KKI", YARN: 2312, WARN: "POIU"}
}

对象2

obj2 = {
  MMJ_KKL:{CODE: "SSW", YARN: 2300, WARN: "NBVC"},
  KKN_AAS:{CODE: "NNH", YARN: 3329, WARN: "MHYT"},
  LLK_PPO:{CODE: "KKI", YARN: 2312, WARN: "POIU"},
  RRE_WED:{CODE: "QQA", YARN: 4430, WARN: "IUYT"}
}

现在大家可以看到 obj1 和 obj2 之间发生了变化。他们是,

******注意:我们不能在这里考虑 obj2 中的 RRE_WED。因为这样的值不包含在 obj1 中。

试过的代码:

Object.keys(obj2).forEach((item) =>
    const result = obj1.filter((item) => arr1[item.code] && !(obj2[item.product_code].YARN === item.YARN && obj2[item.WARN].note === item.WARN));
);

预期输出:

[
  {
    "CODE": "SSW",
    "YARN": "2300",
    "WARN": "NBVC"
  },
  {
    "CODE": "NNH",
    "YARN": "3329",
    "WARN": "MHYT"
  }
]

请帮我解决这个问题。

标签: javascript

解决方案


我不确定我是否了解您要使用的所有标准,但这会给您预期的输出。

Object.keys(obj1)
  .filter(key => Boolean(obj2[key]))
  .filter(key => obj1[key].YARN !== obj2[key].YARN)
  .map(key => obj2[key]);

推荐阅读