无法检查数组

时间:2015-08-21 15:32:42

标签: javascript arrays

我知道这已被多次询问,但我见过的答案都没有帮助。所以这就是我的问题。

我有一个动态填充的数组,具体取决于从列表中选择的内容。有时,推送的数组值将具有多个相同的值。我想获取该数组的值,查找该数组中是否已存在该值,并将其推送到新数组。我有两个默认为空的全局数组。

//Global arrays
var water_pipes_size_array = [];
var new_water_pipes_size_array  = [];

water_pipes_size_array的外观示例如下: [0, 0, 0, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 10, 10, 8, 4, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 8, 8, 8, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

我尝试做的是搜索此数组并查找任何重复值并将其推送到new_water_pipes_size_array。但是,我所拥有的不起作用。我仍然得到一个空阵列。

for(var j = 0; j < water_pipes_size_array - 1; j++){
    if(water_pipes_size_array[j + 1] == water_pipes_size_array[j]){
        new_water_pipes_size_array.push(water_pipes_size_array[j]);
    }
}
console.log(new_water_pipes_size_array);

任何人都可以告诉我我做错了什么,并就如何修复它提供一些反馈意见吗?

2 个答案:

答案 0 :(得分:3)

我认为您的意思是将water_pipes_size_array.length放入for循环而不是water_pipes_size_array。此外,由于您从0开始,因此您不需要减去1:

for(var j = 0; j < water_pipes_size_array.length; j++){
    if(water_pipes_size_array[j + 1] == water_pipes_size_array[j]){
        new_water_pipes_size_array.push(water_pipes_size_array[j]);
    }
}

但逻辑完全错了。如果您只想消除重复项,请尝试以下操作:

for (var j = 0; j < water_pipes_size_array.length; j++) {
    if (new_water_pipes_size_array.indexOf(water_pipes_size_array[j]) == -1) {
        new_water_pipes_size_array.push(water_pipes_size_array[j]);
    }
}

答案 1 :(得分:0)

如果你可以使用jQuery,有很好的方法来实现

strftime