如果重复 x 次,则从数组中删除值 | JavaScript

Posted

技术标签:

【中文标题】如果重复 x 次,则从数组中删除值 | JavaScript【英文标题】:Remove value from array if it repeats x times | JavaScript 【发布时间】:2021-10-10 09:10:45 【问题描述】:

我有一个包含值的数组,我想知道如果值重复 3 或 4 次,减少它的最佳方法是什么?

我知道如何删除重复项,但如果我希望该值重复两次怎么办?

让我们举个例子:

let arr = [1,1,1,3,3,2,4,4,7,7,7,7]
let n = 2 //so I want numbers to repeat maximum two times

结果是:

[1,1,3,3,2,4,4,7,7]

【问题讨论】:

熟悉how to access and process nested objects, arrays or JSON以及如何使用create objects并使用ObjectArray的可用静态和实例方法。 【参考方案1】:

看看这个,可能会有帮助:

const reducer = (arr, n) => Object
   .entries(arr.reduce((all, x) => (all[x] ? all[x]++ : all[x] = 1, all), ))
   .reduce((arr, x) => arr.concat(Array(x[1] > n ? n : x[1]).fill(x[0])), []);

let arr = [1,1,1,3,3,2,4,4,7,7,7,7]
let n = 2
reducer(arr, n) // Array(9) [ "1", "1", "2", "3", "3", "4", "4", "7", "7" ]

【讨论】:

以上是关于如果重复 x 次,则从数组中删除值 | JavaScript的主要内容,如果未能解决你的问题,请参考以下文章

如果数组值包含字符串,则从 List<string> 中查找值 [重复]

如果不在其他数组中,则从数组中删除值,但保持相同的顺序

如果numpy数组的所有元素都等于某个值,则从numpy数组中删除行/列

Javascript - 按值删除数组项[重复]

如果某些陈述为真,则从列表中删除对象[重复]

如何检查另一个数组中不存在数组值