-
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 = [{ 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(i => i.cars) .map(i => i .map(i => i.nr) .reduce((result,i)=>result.concat(i),[]));console.log(res)如果要删除重复项: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(i => i.cars) .map(i => i .map(i => i.nr) .reduce(function(result,i){ i.map(item=>{ if(result.indexOf(item)<0){ result.push(item); } }); return result; },[]));console.log(res)