var a = {
a: 1,
b:2
}
var b = {
a: [1],
b: [2]
}
var c = {
a: {
isShow: true,
extends: [2],
},
b: {
isShow: false,
extends: [3],
}
}
var d = {
a: {
rule: [1],
isShow : true,
extends: [2],
value : 1
},
a: {
rule: [2],
isShow : false,
extends: [3],
value : 2
},
}
蹲一个 a b c 合并成 d 的方法 JS
1
vivipure 2022-03-22 20:28:21 +08:00 1
|
2
siteshen 2022-03-22 20:36:20 +08:00 1
var entries = Object.entries(a).map(([k, v]) => [k, { rule: b[k], ...c[k], value: v }]);
var obj = Object.fromEntries(entries); console.log(obj); // { // a: { rule: [ 1 ], isShow: true, extends: [ 2 ], value: 1 }, // b: { rule: [ 2 ], isShow: false, extends: [ 3 ], value: 2 } // } |
3
autoxbc 2022-03-22 21:23:11 +08:00 1
类似 #2 这种,用 for ... in 遍历就行,可以节约很多构造成本
|
4
3dwelcome 2022-03-22 21:57:59 +08:00 via Android 1
不用自己写,了解一下 jsonnet ,就是用来给 json 打补丁,让 a+b+c=d 。
|
5
liluwang5210 2022-03-23 11:49:32 +08:00 1
d 不知道是不是写错了,var d = {
a: { rule: [1], isShow : true, extends: [2], value : 1 }, b: { rule: [2], isShow : false, extends: [3], value : 2 }, } 写了比较笨的 for (const key in a) { if (a.hasOwnProperty.call(a, key)) { c[key].value = a[key]; } } for (const key in b) { if (b.hasOwnProperty.call(b, key)) { c[key].role = b[key]; } } |