我想从一个对象创建新的JS数组。我解释了我的情况,如下所示。
obj1
array (
0 =>
array (
'item1' => 25,
'item2' => 22,
'item3' => 11,
),
1 =>
array (
'item1' => 80,
'item2' => 81,
'item3' => 83,
'item4' => 84,
),
2 =>
array (
'item3' => array (
'item1' => 85,
'item2' => 85,
'item3' => 85,
'item4' => 85,
'item5' => 85,
),
),
)
obj2
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"}
}
现在大家都可以看到obj1和obj2之间发生了变化。他们是
******注意:我们不能在obj2中考虑RRE_WED。因为这样的值不包含在obj1中。
尝试的代码:
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"}
}
预期输出:
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));
);
请帮助我解决这个问题。
答案 0 :(得分:1)
我不确定我是否了解您要使用的所有条件,但这将为您提供预期的输出。
Object.keys(obj1)
.filter(key => Boolean(obj2[key]))
.filter(key => obj1[key].YARN !== obj2[key].YARN)
.map(key => obj2[key]);
答案 1 :(得分:1)
假设您要将obj2合并到obj1:
1-使用stringify
查找具有更改的属性。
2-使用扩展运算符...
将obj2合并到obj1。
Object.keys(obj1)
.filter((k)=>JSON.stringify(obj1[k]) !== JSON.stringify(obj2[k]))
.map((k)=> ({...obj1[k], ...obj2[k]}))