javascript - 使用 Javascript 在 1 个数组中查找公共(public)元素

标签 javascript arrays

我有这个:

var mergeUniqueItems = ["-JsDEcxz_ZSGFLKwd1QM", 
"-JsJ2NXGDYKI6QRsuXVK", 
"-JsJ2RK-kOG2eGcG04xF", 
"-JsJ2RK-kOG2eGcG04xF", 
"-JsJ2YLPiP6751zh8geS"]

我用过这个:

    var duplicateArray = [];
    for (var i = 0; i < mergeUniqueItems.length; i ++){
        for (var j = 1; j < mergeUniqueItems.length; j ++){
            if (mergeUniqueItems[i] == mergeUniqueItems[j]){
                duplicateArray.push(mergeUniqueItems[i]);
            }
        }
    }

    console.log(duplicateArray);

结果变成了这样:

["-JsJ2NXGDYKI6QRsuXVK", 
"-JsJ2RK-kOG2eGcG04xF", 
"-JsJ2RK-kOG2eGcG04xF", 
"-JsJ2RK-kOG2eGcG04xF", 
"-JsJ2RK-kOG2eGcG04xF", 
"-JsJ2YLPiP6751zh8geS"]

当我的期望是 1 个数组中的重复项时,如下所示:

 ["-JsJ2RK-kOG2eGcG04xF"]

如果有多个重复值,数组应该是这样的:

["-JsJ2RK-kOG2eGcG04xF", "another_duplicate_1", "another_duplicate_2", ...]

我真的不知道我的代码有什么问题,请帮忙。

谢谢

最佳答案

i+1 而不是 1 开始 j,并检查以确保您尚未添加重复值。

for (var i = 0; i < mergeUniqueItems.length; i ++){
    for (var j = i + 1; j < mergeUniqueItems.length; j ++){
        if (mergeUniqueItems[i] == mergeUniqueItems[j]){
            if (duplicateArray.indexOf(mergeUniqueItems[i]) < 0)
                duplicateArray.push(mergeUniqueItems[i]);
            break;
        }

关于javascript - 使用 Javascript 在 1 个数组中查找公共(public)元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30966902/

相关文章:

ios - 如何将数字数组减少为具有给定长度且信息丢失少的数组

javascript - 在 Rails 4.2 中解析 POSTed multipart/form-data

javascript - 从不在 DOM 树中的 jquery 对象复制 Canvas 节点

javascript - jQuery .load(或 $.ajax)获取和设置页面标题?

php - 提交后如何将变量从javascript传递给php

java - 为什么java中的数组值存储在堆中?

java - 数组返回 null .. 生成随机单词

javascript - 如何将一个数组拆分为多个数组,每个数组都有唯一的名称

javascript - javascript数组中范围之间的值

Javascript - 私有(private)数组