我知道这已被多次询问,但我见过的答案都没有帮助。所以这就是我的问题。
我有一个动态填充的数组,具体取决于从列表中选择的内容。有时,推送的数组值将具有多个相同的值。我想获取该数组的值,查找该数组中是否已存在该值,并将其推送到新数组。我有两个默认为空的全局数组。
//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);
任何人都可以告诉我我做错了什么,并就如何修复它提供一些反馈意见吗?
答案 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