首页 > 解决方案 > 查找数组的重复项并将其替换为其编号

问题描述

假设我有一个数组:

arr = [25, 25, 25, 20, 15, 10, 10, 5];

我想计算重复的数量(即三个 25 和 2 个 10)并创建一个新数组,变为:

newArr = ['25 * 3', 20, 15, '10 * 2', 5];

我该怎么做呢?谢谢!

标签: javascriptangulartypescript

解决方案


可以使用 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]


推荐阅读