基於其第一個值拆分陣列 - JavaScript
假設我們有一個這樣的數字陣列陣列:-
const arr = [[1, 45], [1, 34], [1, 49], [2, 34], [4, 78], [2, 67], [4, 65]];
每個子陣列都嚴格包含兩個元素。我們需要編寫一個函式,該函式構造一個新陣列,其中所有具有相似第一個值的子陣列的第二個元素被組合在一起。
因此,對於上面的陣列,輸出應如下所示:-
const output = [ [45, 34, 49], [34, 67], [78, 65] ];
我們可以利用 Array.prototype.reduce() 方法來藉助 Map() 構造所需的陣列。
示例
以下是程式碼:-
const arr = [[1, 45], [1, 34], [1, 49], [2, 34], [4, 78], [2, 67], [4, 65]]; const constructSimilarArray = (arr = []) => { const creds = arr.reduce((acc, val) => { const { map, res } = acc; if(!map.has(val[0])){ map.set(val[0], res.push([val[1]]) - 1); }else{ res[map.get(val[0])].push(val[1]); }; return { map, res }; }, { map: new Map(), res: [] }); return creds.res; }; console.log(constructSimilarArray(arr));
輸出
這會在控制檯中生成以下輸出:-
[ [ 45, 34, 49 ], [ 34, 67 ], [ 78, 65 ] ]
廣告