var valueArray = ['ABC','DEF','GHI','ABC','JKL','MNO','DEF'];
var flag =false;
for(var i=0; i<valueArray.length; i++)
{
for(var j=0; j<valueArray.length; j++)
{
if(valueArray[j] == valueArray[i] && j != i)
{
flag = true;
break;
}
}
}
if(flag)
alert('same values found');
我试图通过检查重复值来验证一个数组,我使用上面的代码,我不认为这是一个更好的方法。 jquery
是否有任何方法可以使用此js
代码或{{1}}代码。
答案 0 :(得分:1)
如果你想要快速,兼容,&#34;无处不在&#34;只检查重复项并且不需要任何库的函数,请考虑:
function hasDups(arr) {
// Firstly copy array so don't affect original, then sort
var t = arr.slice().sort();
// If adjacent members have the same value, return true
for (var i=1, iLen=t.length; i<iLen; i++) {
if (t[i] === t[i-1]) return true;
}
return false;
}
console.log(hasDups(['abc','dvf','abc'])); // true
但是你可能想要一些功能更强大的东西,例如您可以提供比较功能,例如'abc' == 'ABC'
或'5' == 5
。
或者,如果您想使用新功能并避免复制和排序,请考虑:
function hasDups2(arr) {
var obj = {};
return arr.some(function(v){
if (obj.hasOwnProperty(v)) return true;
obj[v] = '';
});
}
同样的策略也可以应用于第一个策略,并避免使用ES5的某些。
请注意,上述两者仅适用于比较原始值,尽管第一个值更好。如果你想要一个可靠的函数来查找重复的对象,那就需要更多的工作。
答案 1 :(得分:1)
不确定jquery,但只有一个for循环,性能会更好:
for(var i = 0; i < valueArray.length; i++)
{
if (valueArray.indexOf(valueArray[i], i+1) != -1) {
flag = true;
break;
}
}
答案 2 :(得分:0)
使用jquery.unique()
并比较数组大小。如果结果数组的大小不相同,则返回false。