我的目标是找出数组中是否至少有两个不同的值。如何使用纯javascript找出这个。到现在为止,我使用这个函数,告诉我数组中是否有重复值...
function verificar(array)
{
var filtrado_arr = array.sort();
var resultados = [];
for (var i = 0; i < array.length - 1; i++) {
if (filtrado_arr[i + 1] == filtrado_arr[i]) {
resultados.push(filtrado_arr[i]);
}
}
if (resultados.length > 0)
{
alert("Repeated results"+resultados+".Unable to send to graph.");
return false;
}
else
{
alert("No repeated measures, we can set graph");
return true;
}
}
但当然不是这样。
答案 0 :(得分:4)
使用排序和额外数组似乎是执行此简单任务的过于昂贵的方法。以下是什么问题?
function verificar(arr)
{
for (var i=1; i<arr.length; i++) {
if (arr[i-1] != arr[i])
return true;
}
return false;
}
答案 1 :(得分:2)
function verificar(array) {
for(i=1; i<array.length; i++){
if(array[0] !== array[i])
return true;
}
return false;
}
答案 2 :(得分:2)
您的代码暗示您要检查重复项,而不是验证您是否具有问题中所述的一对唯一值。
我只是在答案池中添加另一种方法:使用Array检查重复项。some():
function hasDuplicates(array){
return array.some( function( elm, idx ){
return array.lastIndexOf( elm ) > idx;
});
}
console.log( hasDuplicates([3,4,1,2]) ); // false
console.log( hasDuplicates([3,4,1,3,2]) ); // true
答案 3 :(得分:1)
只需检查数组“filitrado_arr [0]”的第一个值,即对照数组中的所有其他值。如果其中一个值与数组的第一个值匹配,则表示存在重复值。以下是如何实现该逻辑的示例:
function verificar(array){
var repeats = false
for (var i = 1; i < array.length; i++) {
if (array[0] == array[i]) {
repeats = true;
return repeats
}
}
}
但是,此答案与原始函数中的警报所暗示的目标相匹配,而不是问题本身的目标。