在线蹲一个方法, JS 实现!

2022-03-22 20:02:27 +08:00
 pianjiao
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

2109 次点击
所在节点    程序员
5 条回复
vivipure
2022-03-22 20:28:21 +08:00
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 }
// }
autoxbc
2022-03-22 21:23:11 +08:00
类似 #2 这种,用 for ... in 遍历就行,可以节约很多构造成本
3dwelcome
2022-03-22 21:57:59 +08:00
不用自己写,了解一下 jsonnet ,就是用来给 json 打补丁,让 a+b+c=d 。
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 (const key in b) {
if (b.hasOwnProperty.call(b, key)) {
c[key].role = b[key];

}
}

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/842180

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX