我在嘗試遍歷陣列陣列時遇到問題。正如建議的那樣,我創建了兩個回圈 - 外部回圈和內部回圈。我必須將每個陣列的每個專案與其他陣列的每個專案進行比較,以確定是否存在重復項。我應該使用哪種方法?
const arr = [
['a', 'b', 'm'],
['g', 'o', 'a', 'b'],
['w', 'o', 'u', 'k', 'a', 'b']
]
const countTimes = arr => {
arr.forEach(el => {
for (k = 0; k < arr.length; k ) {
for (i = 0; i < el.length; i ) {
console.log(arr[k][i])
}
}
})
}
countTimes(arr)
uj5u.com熱心網友回復:
const original = [
['a', 'b', 'm'],
['g', 'o', 'a', 'b'],
['w', 'o', 'u', 'k', 'a', 'b']
]
// The easiest is to split up between unique results and duplicates
let uniqueValues = []
let duplicates = []
// Now we're going to loop every array
original.forEach((arr) => {
// Loop every value inside the array
arr.forEach((value) => {
// Check if we had this value already
if (!uniqueValues.includes(value)) {
uniqueValues.push(value)
} else {
duplicates.push(value)
}
})
})
console.log('Duplicates: ', duplicates)
// If you want remove the duplicates from the duplicates, use set
let uniqueDuplicates = [...new Set(duplicates)]
console.log('Unique duplicates: ', uniqueDuplicates)
uj5u.com熱心網友回復:
如果您不必知道重復項在哪些陣列中,您可以使用Array.prototype.flat()來擺脫嵌套陣列,然后檢查簡單陣列中的重復項。
const arr = [
['a', 'b', 'm'],
['g', 'o', 'a', 'b'],
['w', 'o', 'u', 'k', 'a', 'b']
]
const arr2 = arr.flat() // ['a', 'b', 'm', 'g', 'o', 'a', 'b', 'w', 'o', 'u', 'k', 'a', 'b']
uj5u.com熱心網友回復:
您可以創建一個計數,通過執行嵌套的 forEach 查找全域復制的每個元素的數量
const map = {};
data.forEach((row) => {
row.forEach((item) => {
if (!map[item]) {
map[item] = 1;
} else [map[item] ];
});
});
return map;
}```
uj5u.com熱心網友回復:
您可以創建一個物件來計算一個元素在陣列的陣列中出現的次數
像這樣
const arr = [
['a', 'b', 'm'],
['g', 'o', 'a', 'b'],
['w', 'o', 'u', 'k', 'a', 'b']
]
const countTimes = data => data.flat().reduce((res, v) => {
return {
...res,
[v]: (res[v] || 0 ) 1
}
}, {})
console.log(countTimes(arr))
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/534627.html
標籤:javascript
