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

请教一个数组合并的问题

  •  
  •   Colorful · 52 天前 · 593 次点击
    这是一个创建于 52 天前的主题,其中的信息可能已经有所发展或是发生改变。

    请教一个数组的问题

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

    数组一:[{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
        1
    zantop   52 天前
    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)
        2
    Colorful   52 天前
    @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"}]
        3
    sunriz   52 天前
    建议把 json 排好版再发,有相关网站。看得难受
        4
    Colorful   52 天前
    @sunriz 好的
        5
    source   51 天前
    arr2.map(v => ({
    ...v,
    otor: [v.otor.map(item => arr1.find(j => (j.id === item || j.name === item)))]
    }))
        6
    source   51 天前
    手抖,v.otor 前面多了一对中括号
        7
    Colorful   51 天前
    @source 我看看,受教了
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1357 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 19ms · UTC 00:30 · PVG 08:30 · LAX 17:30 · JFK 20:30
    ♥ Do have faith in what you're doing.