在javascript中找到重复值时出现问题

时间:2019-04-05 15:59:20

标签: javascript arrays duplicates

我有一个数组,我想检查一下,数组是否包含重复元素。

我尝试下面的代码。该代码在最后阶段给出未定义错误的“ CustomNumber”。

请帮助。

 for(var i = 0; i <= myArray.length; i++) 
 {
    for(var j = i; j <= myArray.length; j++) 
    {
        if(i != j && myArray[i].CustomNumber == myArray[j].CustomNumber) 
        {
            return true;
        }
    }
}

错误:未捕获的类型错误:无法读取未定义的属性“ CustomNumber”

1 个答案:

答案 0 :(得分:0)

问题是j和i都将超出数组的边界。

数组索引的范围是0到长度-1。 因此,在循环for(var j = i; j <= myArray.length; j++)中,最后一次迭代将失败,因为您将尝试引用数组末尾之外的内容。 与for(var i = 0; i <= myArray.length; i++)类似。

您应检查i(或j)小于数组的长度:

for(var i = 0; i < myArray.length; i++) 
{
   for(var j = i; j < myArray.length; j++) 
   {
       if(i != j && myArray[i].CustomNumber == myArray[j].CustomNumber) 
       {
           return true;
       }
   }
}