法1 for循环+声明空数组
function repNumber() {
const arr = [6, 6, 8, 7, 8, 7, 6, 7, 6, 6, 7]
const arrSix = []
const arrSeven = []
const arrEight = []
for (let i = 0
if (arr[i] === 6) {
arrSix.push(arr[i])
}
if (arr[i] === 7) {
arrSeven.push(arr[i])
}
if (arr[i] === 8) {
arrEight.push(arr[i])
}
}
return `6:${arrSix.length}次,7:${arrSeven.length}次,8:${arrEight.length}次`
}
console.log(repNumber())//6:5次,7:4次,8:2次
法2 forEach遍历+声明空数组
function repLetter() {
const arr = ['a', 'b', 'c', 'a', 'c', 'b', 'b', 'a', 'c', 'b', 'a']
const a = []
const b = []
const c = []
arr.forEach(item => {
if (item === 'a') {
a.push(item)
}
if (item === 'b') {
b.push(item)
}
if (item === 'c') {
c.push(item)
}
})
return `a:${a.length}次,b:${b.length}次,c:${c.length}次`
}
console.log(repLetter())//a:4次,b:4次,c:3次
法3 filter()方法
function repMenus() {
const arr = ['红烧肉', '大闸蟹', '红烧肉', '大闸蟹', '大闸蟹', '武昌鱼', '红烧肉']
const meatArr = arr.filter(item => item === '红烧肉')
const fishArr = arr.filter(item => item === '武昌鱼')
const crapArr = arr.filter(item => item === '大闸蟹')
return `红烧肉:${meatArr.length}次,武昌鱼:${fishArr.length}次,大闸蟹:${crapArr.length}次`
}
console.log(repMenus())
法4 reduce()方法
const arr = ['Lily', 'lucy', 'Alice', 'lily', 'Alice', 'Bob', 'Jane', 'Alice']
function repCount(arr) {
const obj = arr.reduce((sum, item) => {
if (item in sum) {
sum[item]++
} else {
sum[item] = 1
}
return sum
}, {})
return obj
}
console.log(repCount(arr))
const arr = ['Lily', 'lucy', 'Alice', 'lily', 'Alice', 'Bob', 'Jane', 'Alice']
function repCount(arr) {
const obj = arr.reduce((sum, item) => (sum[item] ? sum[item]++ : (sum[item] = 1), sum), {})
return obj
}
console.log(repCount(arr))