
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 |
2 siteshen 2022-03-22 20:36:20 +08:00 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 类似 #2 这种,用 for ... in 遍历就行,可以节约很多构造成本 |
4 3dwelcome 2022-03-22 21:57:59 +08:00 via Android 不用自己写,了解一下 jsonnet ,就是用来给 json 打补丁,让 a+b+c=d 。 |
5 liluwang5210 2022-03-23 11:49:32 +08:00 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 (cont key in b) { if (b.hasOwnProperty.call(b, key)) { c[key].role = b[key]; } } |