我有一个数组,我想检查一下,数组是否包含重复元素。
我尝试下面的代码。该代码在最后阶段给出未定义错误的“ 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”
答案 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;
}
}
}