Получил массив массивов, подобный этому:
let arr = [
[
{"key":2, "other":123},
{"key":2, "other":222}
],
[
{"key":3, "other":0}
],
[
{"key":1, "other":11},
{"key":1, "other":23}
],
[
{"key":1, "other":22}
]
]
Мне нужно получить это arr
, но с сгруппированными массивами с таким же значением "ключа" первого элемента, так что это будет выглядеть так:
let arr = [
[
{"key":2, "other":123},
{"key":2, "other":222}
],
[
{"key":3, "other":0}
],
[
[
{"key":1, "other":11},
{"key":1, "other":23}
],
[
{"key":1, "other":22}
]
],
]
Я пытался использовать функцию уменьшения, но результат был совершенно другим.
let final = []
for (let i=0; i<arr.length; i++) {
let arr1 = i==0?arr:arr.slice(i)
let final1 = arr1.reduce((acc,x)=> {
acc = acc[0].key==x[0].key?acc.concat(x):acc
return acc
})
arr1.length>1&&final.push(final1)
}
В этом коде проблема заключается в том, что он сравнивает arr [1] с arr [2], arr [3], а затем снова arr [2] с arr [3] и группирует его (хотяarr [1] .key и arr [2] .key и arr [3] .key одинаковы) Можете ли вы дать несколько советов или дать заключительную функцию для этого?