首页 > 解决方案 > 在javascript中查找重复值时出现问题

问题描述

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

我尝试下面的代码。此代码在最后阶段给出未定义错误的“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”

标签: javascriptarraysduplicates

解决方案


问题是 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;
       }
   }
}

推荐阅读