javascript - 使用 for 循环在 Javascript 中创建仅包含重复项的新数组

标签 javascript arrays

我需要编写一个函数来查找数组中出现多次的所有元素,然后将这些元素返回到数组中。 示例:输入:[2,7,4,10,12,27,4,7,7,12, 10] 输出:[4,7,10,12]

这是我目前所拥有的:

let arr= [4,4,6,8,8,9,10,10]

var method1 = function(a) {
  var counts = [];
    for(var i = 0; i <= a.length; i++) {
        for(var j = i; j <= a.length; j++) {
            if(i != j && a[i] == a[j]) {
                counts.push(a[i]);
                }
              }
            }

    return counts;
}
console.log(method1(arr));

当数组只有两个数字时有效,但如果有更多则无效。我怎样才能独立于每个数字中有多少个重复项来计算每个数字中的一个?

感谢您的帮助!

最佳答案

你可以用哈希表来计算值,如果你有两个,就用这个元素。

var array = [2, 7, 4, 10, 12, 27, 4, 7, 7, 12, 10],
    hash = Object.create(null),
    result = array.filter(v => (hash[v] = (hash[v] || 0) + 1) === 2);

console.log(result);

关于javascript - 使用 for 循环在 Javascript 中创建仅包含重复项的新数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54961861/

相关文章:

javascript - ng-model 未更新日期时间字段已更改

javascript - 数组长度与数组中值的数量

javascript - 如何使用与按钮单击和 HTML5 视频结束关联的 jQuery 重置转换事件?

javascript - 在快速路由上应用 jwt 不会引发错误

c# - 当用 [] 中的数字赋值时,无法将类型字符串 [] 转换为字符串

javascript - 如何在javascript中使用数组填充来显示用户输入的文本或数字?

javascript - 未捕获的类型错误 : Cannot read property 'ContentContainer' of undefined

javascript - 对字符数组使用 array.reduce()

javascript - 减少不删除正确的数组项

python - 计算多个并行数组的最优雅/高效/Pythonic 方法?