数组中元素出现的次数
方法1 forEach()
const arr = ['a', 'a', 'b', 'c', 'a']
const obj = {}
arr.forEach(item => {
if (obj[item]) {
obj[item]++
} else {
obj[item] = 1
}
})
console.log(obj)
方法2 reduce()
const arr = ['a', 'a', 'b', 'c', 'a']
const obj = arr.reduce((prev, item) => {
prev[item] ? prev[item]++ : prev[item] = 1
return prev
}, {})
console.log(obj);
方法3 for...of...
const arr = ['a', 'a', 'b', 'c', 'a']
const obj = {}
for (let k of arr) {
if (obj[k]) {
obj[k]++
} else {
obj[k] = 1
}
}
console.log(obj);
方法4 for...in
const arr = ['a', 'a', 'b', 'c', 'a']
const obj = {}
for (let k in arr) {
if (obj[arr[k]]) {
obj[arr[k]]++
} else {
obj[arr[k]] = 1
}
}
console.log(obj);
方法5 for循环
const arr = ['a', 'a', 'b', 'c', 'a']
const obj = {}
for (let i = 0; i < arr.length; i++) {
if (obj[arr[i]]) {
obj[arr[i]]++
} else {
obj[arr[i]] = 1
}
}
console.log(obj);
方法6 map()
const arr = ['a', 'a', 'b', 'c', 'a']
const obj = {}
arr.map(item => {
if (obj[item]) {
obj[item]++
} else {
obj[item] = 1
}
})
console.log(obj);
方法7 filter()
const arr = ['a', 'a', 'b', 'c', 'a']
const obj = {}
arr.filter(item => {
if (obj[item]) {
obj[item]++
} else {
obj[item] = 1
}
})
console.log(obj);
方法8 some()
const arr = ['a', 'a', 'b', 'c', 'a']
const obj = {}
arr.some(item => {
if (obj[item]) {
obj[item]++
} else {
obj[item] = 1
}
})
console.log(obj);
深度检测
forEach()实现,上述其他的原理一样
const arr = ['a', 'a', 'b', 'c', ['a', 'b', ['a']]]
const obj = {}
function count(arr) {
arr.forEach(item => {
if (Array.isArray(item)) {
count(item)
} else {
if (obj[item]) {
obj[item]++
} else {
obj[item] = 1
}
}
});
}
count(arr)
console.log(obj);