javascript - 查找数组的重复项并将其替换为其编号
问题描述
假设我有一个数组:
arr = [25, 25, 25, 20, 15, 10, 10, 5];
我想计算重复的数量(即三个 25 和 2 个 10)并创建一个新数组,变为:
newArr = ['25 * 3', 20, 15, '10 * 2', 5];
我该怎么做呢?谢谢!
解决方案
可以使用 Set 和 filter 解决
let arr = [25, 25, 25, 20, 15, 10, 10, 5];
const newArr = [...new Set(arr)].map((x) => {
const count = arr.filter(y => y == x).length
return count > 1 ? x + " * " + count: x;
})
console.log(newArr) // ["25 * 3", 20, 15, "10 * 2", 5]
或者如果你想要数值,你可以这样做
let arr = [25, 25, 25, 20, 15, 10, 10, 5];
const newArr = [...new Set(arr)].map((x) => arr.filter(y => y == x).length * x)
console.log(newArr) // [75, 20, 15, 20, 5]