[英]Javascript - join arrays of objects
我在 class 中有方法,它返回 8 個 arrays,每個對象有 8 個: [{...},{...},{...},{...},{...},{...},{...},{...}] [{...},{...},{...},{...},{...},{...},{...},{...}] etc.
我想要得到的結果是一個包含所有這些對象的數組,如下所示: [{...},{...},{...},{...},{...},{...},{...},{...},{...},{...},{...},{...}]
等我應該使用什么 function 來獲得這個? 我嘗試使用 concat() 但在這里我必須將另一個數組作為參數傳遞......
似乎.flat()正是您所需要的。
您可以使用arr.flat(depth);
此示例在mozilla javascript 文檔中給出:
var arr1 = [1, 2, [3, 4]];
arr1.flat();
// [1, 2, 3, 4]
var arr2 = [1, 2, [3, 4, [5, 6]]];
arr2.flat();
// [1, 2, 3, 4, [5, 6]]
var arr3 = [1, 2, [3, 4, [5, 6]]];
arr3.flat(2);
// [1, 2, 3, 4, 5, 6]
如果您只是嘗試將所有對象合並到一個數組中,那么一種方法是使用Array.reduce
。
const result = [ [{}], [{}], [{}], [{}], [{}], [{}], [{}], [{}] ]; const final = result.reduce( (acc, curr) => { return [...acc, ...curr]; }, []); console.log(final);
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce
假設以下作為您的對象結構數組
let array = [[{name: 1}, {name: 2}, {name: 3}], [{name: 1}, {name: 2}, {name: 3}], [{name: 1}, {name: 2}, {name: 3}]] let out1 = [].concat.apply([], array) console.log(out1)
如果您使用最新的 ES,那么您可以嘗試使用這個array.flat ,正如 sirko 在評論中提到的那樣
let array = [[{name: 1}, {name: 2}, {name: 3}], [{name: 1}, {name: 2}, {name: 3}], [{name: 1}, {name: 2}, {name: 3}]] let out2 = array.flat() console.log(out2)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.