数组连接问题

我有下一个代码:


let arr = [{

    id: 1,

    name: 'test',

    cars: [{

        nr: [5, 4]

      },

      {

        nr: [2]


      },

      {

        nr: [1]


      },

      {

        nr: [5, 4]

      }

    ],

  },

  {

    id: 2,

    name: 'test2',

    cars: [{

        nr: [5, 4]

      },

      {

        nr: [2]


      },

      {

        nr: [8]


      },

      {

        nr: [5, 4]

      }

    ],

  }

]



const res = arr.reduce(i => i.cars).map(i => i.nr.map(i => [].concat(i)))

console.log(res)


因此,我期望一个数组连接来自nr. 例如,结果我应该得到 2 个数组。一为id1,一为id2。第一个数组应该是这样的:[5,4,2,1,5,4],第二个应该实现相同的逻辑。为此,我制作: const res = arr.reduce(i => i.cars).map(i=> i.nr.map(i =>[].concat(i))),但它不起作用。何能得到预期的结果?


哔哔one
浏览 142回答 3
3回答

POPMUISE

您希望首先映射所有元素并通过 reduce 函数获取汽车 ID 数组。const res = arr.map(({ cars }) => cars.reduce((acc, { nr }) => [...acc, ...nr], [])));res; // =>  [ [ 5, 4, 2, 1, 5, 4 ], [ 5, 4, 2, 8, 5, 4 ] ]让我知道这是否足够清楚或者您有任何问题!

三国纷争

您可以使用which 将与onmap一起返回一个新数组。在 reduce 回调中,您可以将当前. SInce concat 返回一个新数组,因此将值重新分配给累加器reducecarsconcatnr编辑:使用另一个reduce函数来添加值let arr = [{    id: 1,    name: 'test',    cars: [{        nr: [5, 4]      },      {        nr: [2]      },      {        nr: [1]      },      {        nr: [5, 4]      }    ],  },  {    id: 2,    name: 'test2',    cars: [{        nr: [5, 4]      },      {        nr: [2]      },      {        nr: [8]      },      {        nr: [5, 4]      }    ],  }]const res = arr.map((item) => {  return item.cars.reduce((acc, curr) => {    acc = acc.concat(curr.nr)    return acc;  }, []).reduce((acc, curr) => {    return acc + curr;  }, 0);});console.log(res)

小唯快跑啊

好吧,我不清楚你在找什么。但是,这里有一个示例代码,用于分别收集每个集合的 nr id。let arr = [{&nbsp; &nbsp; id: 1,&nbsp; &nbsp; name: 'test',&nbsp; &nbsp; cars: [{&nbsp; &nbsp; &nbsp; &nbsp; nr: [5, 4]&nbsp; &nbsp; &nbsp; },&nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; nr: [2]&nbsp; &nbsp; &nbsp; },&nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; nr: [1]&nbsp; &nbsp; &nbsp; },&nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; nr: [5, 4]&nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; ],&nbsp; },&nbsp; {&nbsp; &nbsp; id: 2,&nbsp; &nbsp; name: 'test2',&nbsp; &nbsp; cars: [{&nbsp; &nbsp; &nbsp; &nbsp; nr: [5, 4]&nbsp; &nbsp; &nbsp; },&nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; nr: [2]&nbsp; &nbsp; &nbsp; },&nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; nr: [8]&nbsp; &nbsp; &nbsp; },&nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; nr: [5, 4]&nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; ],&nbsp; }]const res = arr&nbsp; &nbsp;.map(i => i.cars)&nbsp; &nbsp;.map(i => i&nbsp; &nbsp; &nbsp; &nbsp;.map(i => i.nr)&nbsp; &nbsp; &nbsp; &nbsp;.reduce((result,i)=>result.concat(i),[]));console.log(res)如果要删除重复项:let arr = [{&nbsp; &nbsp; id: 1,&nbsp; &nbsp; name: 'test',&nbsp; &nbsp; cars: [{&nbsp; &nbsp; &nbsp; &nbsp; nr: [5, 4]&nbsp; &nbsp; &nbsp; },&nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; nr: [2]&nbsp; &nbsp; &nbsp; },&nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; nr: [1]&nbsp; &nbsp; &nbsp; },&nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; nr: [5, 4]&nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; ],&nbsp; },&nbsp; {&nbsp; &nbsp; id: 2,&nbsp; &nbsp; name: 'test2',&nbsp; &nbsp; cars: [{&nbsp; &nbsp; &nbsp; &nbsp; nr: [5, 4]&nbsp; &nbsp; &nbsp; },&nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; nr: [2]&nbsp; &nbsp; &nbsp; },&nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; nr: [8]&nbsp; &nbsp; &nbsp; },&nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; nr: [5, 4]&nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; ],&nbsp; }]const res = arr&nbsp; &nbsp;.map(i => i.cars)&nbsp; &nbsp;.map(i => i&nbsp; &nbsp; &nbsp; &nbsp;.map(i => i.nr)&nbsp; &nbsp; &nbsp; &nbsp;.reduce(function(result,i){&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;i.map(item=>{&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if(result.indexOf(item)<0){&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;result.push(item);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;});&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return result;&nbsp; &nbsp; &nbsp; &nbsp;},[]));console.log(res)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript