V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
pianjiao
V2EX  ›  程序员

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

  •  
  •   pianjiao · 2022-03-22 20:02:27 +08:00 · 2103 次点击
    这是一个创建于 969 天前的主题,其中的信息可能已经有所发展或是发生改变。
    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

    vivipure
        1
    vivipure  
       2022-03-22 20:28:21 +08:00   ❤️ 1
    siteshen
        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 }
    // }
    autoxbc
        3
    autoxbc  
       2022-03-22 21:23:11 +08:00   ❤️ 1
    类似 #2 这种,用 for ... in 遍历就行,可以节约很多构造成本
    3dwelcome
        4
    3dwelcome  
       2022-03-22 21:57:59 +08:00 via Android   ❤️ 1
    不用自己写,了解一下 jsonnet ,就是用来给 json 打补丁,让 a+b+c=d 。
    liluwang5210
        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];

    }
    }
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2983 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 08:56 · PVG 16:56 · LAX 00:56 · JFK 03:56
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.