【问题标题】:Duplicate check for comma separated array重复检查逗号分隔数组
【发布时间】:2018-07-31 09:53:24
【问题描述】:

我正在尝试检查以下数组中的重复项,只是如果存在重复项,我想返回 true 或 false。

var array = ["Saturday", "Sunday", "Monday", "Tuesday", "Saturday" ];

for ( var i = 0; i < array.length; i++){

for (var j = i+1; j< array.length; j++){

if (array [i] === array [j]){

console.log(array[i]);
}
}

}

我尝试了上述方法,它只为数组中的一项提供结果,而不是逗号分隔。如何以最佳方式为逗号分隔数组编写重复检查函数?

Array(10)
 0: "test3,tier 1,test,test2
"1: "test3,tier 1,test,test2
"2: "test3,tier 1,test,test2
"3: "test3,tier 1,test,test2
"4: "test3,tier 1,test,test2
"5: "test3,tier 1,test,test2
"6: "test3,tier 1,test,test2
"7: "test3,tier 1,test,test2
"8: "test3,tier 1,test,test2
"9: "test3,tier 1,test,test2
"length: 10
__proto__: Array(0)

【问题讨论】:

  • 哦,所以你的真实数组中有字符串值,其中包含逗号,它们只是字符串,逗号没有什么特别的 - 那么你想准确测试什么?代码将检查并输出重复项(即所有 10 个都相同)
  • 如果不重复,我只想返回 true,如果存在重复则返回 false
  • 所以,在你 console.log 的地方返回 true ...在循环之外返回 false
  • new Set(array).size === array.length 如果所有数组项都是唯一的,则为 true
  • a.map(item=&gt; item .split(',').map(child =&gt; child)).map(item =&gt; new Set(item).size === item.length)尝试这样做可能会解决您的问题

标签: javascript jquery arrays duplicates logic


【解决方案1】:

Set 中的项目将始终是唯一的,因为它只保留您输入的每个值的一个副本。下面是一个使用此属性的函数:

function hasDuplicates(iterable) {
  return  new Set(iterable).size !== iterable.length;
}

// Demo
var array = ["Saturday", "Sunday", "Monday", "Tuesday", "Saturday" ];
console.log(hasDuplicates(array))

// Returns True if there is duplicates
// Otherwise return false

Set(iterable).size 将返回该集合中唯一元素的计数,而iterable.length 是原始数组中所有元素的计数。

编辑#1

要仅检查第一项是否有重复项,您可以使用类似这样的方法

var array = ["Saturday",  "Saturday", "Sunday", "Monday", "Tuesday" ];


console.log(array.indexOf(array[0] , 1) === -1 ? "No duplicates" : "Has duplicate" );

【讨论】:

  • 我只需要检查数组中每个项目的逗号分隔值的第一个值是否重复
  • 请考虑问题中的第二个数组
  • 第二个数组?你的问题只有一个!
  • Array(10) 0: "test3,tier 1,test,test2 "1: "test3,tier 1,test,test2 "2: "test3,tier 1,test,test2 "3: "test3,tier 1,test,test2 "4: "test3,tier 1,test,test2 "5: "test3,tier 1,test,test2 "6: "test3,tier 1,test,test2 "7: "test3 ,tier 1,test,test2 "8: "test3,tier 1,test,test2 "9: "test3,tier 1,test,test2 "长度: 10
  • 感谢您的帮助,我在这里提出了最终解决方案作为另一个答案
【解决方案2】:
// Check duplicates in upload data excel

    checkDuplicates(arr) {

        if (arr.length > 1) {
            for (var i = 0; i < arr.length; i++) {
                for (var j = i + 1; j < arr.length; j++) {

                    if (arr[i].split(',')[0] === arr[j].split(',')[0]) {
                        return true;
                    } else {
                        return false;
                    }
                }
            }
        } else {
            return false;
        }
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-09-07
    • 2015-05-25
    • 1970-01-01
    • 2014-01-15
    • 1970-01-01
    • 2020-12-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多