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

请教一个数组合并的问题

  •  
  •   Colorful · 2019-06-26 10:30:49 +08:00 · 1495 次点击
    这是一个创建于 1980 天前的主题,其中的信息可能已经有所发展或是发生改变。

    请教一个数组的问题

    有两个数组,合并成一个数组

    数组一:[{id:"150",name:"李三"},{id:"151",name:"李三 1"},{id:"152",name:"李三 2"},{id:"153",name:"李三 3"}]

    数组二:[{"sname":"一级","otor":["李三 1","150"]},{"sname":"一级 2","otor":["李三 2"]},,{"sname":"一级 3","otor":["153"]},]

    最后合并成数组:[{"sname":"一级","otor":[{id:"151",name:"李三 1"},{id:"150",name:"李三"}]},{"sname":"一级 2","otor":[{id:"152",name:"李三 2"}]},,{"sname":"一级 3","otor":[{id:"153",name:"李三 3"}]},]

    7 条回复    2019-06-27 12:46:58 +08:00
    zantop
        1
    zantop  
       2019-06-26 11:32:36 +08:00
    const arr1 = [
    { id: '150', name: '李三' },
    { id: '151', name: '李三 1' },
    { id: '152', name: '李三 2' },
    { id: '153', name: '李三 3' }
    ];

    const arr2 = [
    { sname: '一级', otor: ['李三 1', '150'] },
    { sname: '一级 2', otor: ['李三 2'] },
    { sname: '一级 3', otor: ['153'] }
    ];

    arr2.map((item, index) => {
    const temArr = [];
    item.otor.map((ele, idx) => {
    const ar = arr1.filter((a, b) => ele === a.id || ele === a.name);
    if (ar.length > 0) {
    temArr.push(ar[0]);
    }
    });
    item.otor = temArr;
    });
    console.log(arr2)
    Colorful
        2
    Colorful  
    OP
       2019-06-26 11:45:06 +08:00
    @zantop 请教下
    假如说再变化一下方式应该是怎么样修改?在第二个数组里面多加了一个新的,在第一个数组里面是没有的。

    数组一:[{id:"150",name:"李三"},{id:"151",name:"李三 1"},{id:"152",name:"李三 2"},{id:"153",name:"李三 3"}]

    数组二:[{"sname":"一级","otor":["李三 1","150"]},{"sname":"一级 2","otor":["李三 2"]},{"sname":"一级 3","otor":["153"]},{"sname":"一级 4","otor":[{id:"1531",name:"李三 31"}]},]

    最后合并成数组:[{"sname":"一级","otor":[{id:"151",name:"李三 1"},{id:"150",name:"李三"}]},{"sname":"一级 2","otor":[{id:"152",name:"李三 2"}]},{"sname":"一级 3","otor":[{id:"153",name:"李三 3"}]},{"sname":"一级 4","otor":[{id:"1531",name:"李三 31"}]
    sunriz
        3
    sunriz  
       2019-06-26 11:47:27 +08:00
    建议把 json 排好版再发,有相关网站。看得难受
    Colorful
        4
    Colorful  
    OP
       2019-06-26 11:51:16 +08:00
    @sunriz 好的
    source
        5
    source  
       2019-06-27 09:18:12 +08:00
    arr2.map(v => ({
    ...v,
    otor: [v.otor.map(item => arr1.find(j => (j.id === item || j.name === item)))]
    }))
    source
        6
    source  
       2019-06-27 09:19:59 +08:00
    手抖,v.otor 前面多了一对中括号
    Colorful
        7
    Colorful  
    OP
       2019-06-27 12:46:58 +08:00
    @source 我看看,受教了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5612 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 01:29 · PVG 09:29 · LAX 17:29 · JFK 20:29
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.