使用 JavaScript 根據相等值對陣列分組
假設我們有一個字串/數字字面陣列,它包含一些重複值,如下所示 −
const array = ['day', 'night', 'afternoon', 'night', 'noon', 'night', 'noon', 'day', 'afternoon', 'day', 'night'];
我們需要編寫一個函式 groupSimilar(),該函式接收此陣列並返回一個新陣列,其中所有重複項都以子陣列的形式組合在一起作為第一個元素,它們在原始陣列中的總數作為第二個元素。
因此,對於此示例,輸出應該是 −
[ [ 'day', 3 ], [ 'night', 4 ], [ 'afternoon', 2 ], [ 'noon', 2 ] ]
讓我們編寫此函式的程式碼。我們使用 Array.prototype.map() 函式構建一個新陣列,我們使用 Map 來跟蹤陣列中的重複項 −
示例
const array = ['day', 'night', 'afternoon', 'night', 'noon', 'night',
'noon', 'day', 'afternoon', 'day', 'night'];
const groupSimilar = arr => {
return arr.reduce((acc, val) => {
const { data, map } = acc;
const ind = map.get(val);
if(map.has(val)){
data[ind][1]++;
} else {
map.set(val, data.push([val, 1])-1);
}
return { data, map };
}, {
data: [],
map: new Map()
}).data;
};
console.log(groupSimilar(array));輸出
控制檯中的輸出將是 −
[ [ 'day', 3 ], [ 'night', 4 ], [ 'afternoon', 2 ], [ 'noon', 2 ] ]
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP