代码之家  ›  专栏  ›  技术社区  ›  hncl

JS使用map合并两个子数组

  •  0
  • hncl  · 技术社区  · 3 年前

    我使用以下方法合并两个数组:

    var mySeries = [
        { name: '4', data: [4] },
        { name: '3', data: [3] }
    ];
    var mySeries1 = [
        { name: '5', data: [0] },
        {name: '4', data:[0]},
        {name: '3', data:[0]},
        {name: '2', data:[0]},
        { name: '1', data: [0] }
    ];
    
    var res = mySeries1.map(obj => mySeries.find(o => o.name === obj.name) || obj);
    console.log(res);

    作品很棒;然而,我的挑战是,我的阵列结构如下:

    var myArray = [{ 
        mySeries : [
            { name: '4', data: [4] },
            { name: '3', data: [3] }],
        mySeries1 : [
            { name: '5', data: [0] },
            { name: '4', data: [0] },
            { name: '3', data: [0] },
            { name: '2', data: [0] },
            { name: '1', data: [0] }]
        }];
    ];
    

    所以我需要映射子阵列,尝试使用以下方法:

    var res = myArray.mySeries1.map(obj => myArray.mySeries.find(o => o.name === obj.name) || obj);
    

    我得到了这个错误:

    Cannot read properties of undefined (reading 'map')
    

    如何指向子阵列?

    2 回复  |  直到 3 年前
        1
  •  0
  •   Nour Ashraf    3 年前

    var myArray = [{ 
        mySeries : [
            { name: '4', data: [4] },
            { name: '3', data: [3] }],
            mySeries1 : [
                { name: '5', data: [0] },
                { name: '4', data: [0] },
                { name: '3', data: [0] },
                { name: '2', data: [0] },
                { name: '1', data: [0] }
            ]
            }];
    
    var res = myArray[0].mySeries1.map(obj => myArray[0].mySeries.find(o => o.name === obj.name) || obj);
    console.log(res)
        2
  •  0
  •   Abhinava B N    3 年前

    您可以将数组更改为dictionary,并像之前一样进行迭代。

    var myArray = { 
        mySeries : [
            { name: '4', data: [4] },
            { name: '3', data: [3] }],
        mySeries1 : [
            { name: '5', data: [0] },
            { name: '4', data: [0] },
            { name: '3', data: [0] },
            { name: '2', data: [0] },
            { name: '1', data: [0] }]
        };
    

    var res = myArray.mySeries1.map(obj => myArray.mySeries.find(o => o.name === obj.name) || obj);