我有一個陣列,我想找到所有相鄰的匹配項并對它們進行計數,然后回傳計數,在像 .map() 這樣的回圈中執行,因此沒有必要存盤超出當前元素計數的記憶體。我需要使用這個數量的當前元素來為每組元素保留足夠的空間
array = [ball, batter, batter, amount, amount, github, github, github, account, account, account, account, account, account, account, github, github, github]
該陣列所需結果的示例是:第一個回圈將回傳 1,第二個回圈將回傳 2,然后是 2,然后是 3,然后是 7,然后是 3
并且此計數將用作保留空間的變數,例如
number to reserve: count
因此,通過每個回圈,變數count將更改并更新為當前元素計數,并且計數的回圈不會停止,直到下一個元素與當前元素不匹配,并且該變數count也將無法使用,直到找到所有并發匹配,所以如果我把它放在console.log(count)函式的末尾,我會分別得到每個數字輸出
uj5u.com熱心網友回復:
您可以輕松地將陣列中的連續字串計算為:
const array = [
"ball",
"batter",
"batter",
"amount",
"amount",
"github",
"github",
"github",
"account",
"account",
"account",
"account",
"account",
"account",
"account",
"github",
"github",
"github",
];
const result = [];
let last = array[0], lastSameIndex = 0;
for (let i = 1; i < array.length; i) {
if (array[i] !== last) {
result.push(i - lastSameIndex);
lastSameIndex = i;
last = array[i];
}
}
result.push(array.length - lastSameIndex);
console.log(result);
uj5u.com熱心網友回復:
我會把它全部存盤到一個物件中。
所以回圈每個專案,如果它不在結果物件中,則計數并添加它。
const items = ["ball", "batter", "batter", "amount", "amount", "github", "github", "github", "account", "account", "account", "account", "account", "account", "account", "github", "github", "github"]
const results = {}
items.forEach(item => {
if (!results[item]) {
results[item] = items.filter(item2 => item2 === item).length
}
})
console.log(results)
console.log(Object.values(results))
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/358314.html
標籤:javascript 数组 循环 排序
