Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/417.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在阵列中检查重复项时出现问题_Javascript_Arrays - Fatal编程技术网

Javascript 在阵列中检查重复项时出现问题

Javascript 在阵列中检查重复项时出现问题,javascript,arrays,Javascript,Arrays,我知道这已经被问了很多次了,但我看到的答案都没有帮助。这就是我的问题 我有一个数组,它根据从列表中选择的内容动态填充get。有时,推送的数组值将具有多个相同的值。我想获取该数组的值,查找该值是否已存在于该数组中,并将其推送到新数组中。我有两个默认为空的全局数组 //Global arrays var water_pipes_size_array = []; var new_water_pipes_size_array = []; water\u pipes\u size\u array的示例

我知道这已经被问了很多次了,但我看到的答案都没有帮助。这就是我的问题

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

//Global arrays
var water_pipes_size_array = [];
var new_water_pipes_size_array  = [];
water\u pipes\u size\u array
的示例如下: “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,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,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,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,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,0,0,0,0]

我要做的是搜索这个数组,找到任何重复的值,并将它们放入
新的\u water\u pipes\u size\u数组中。然而,我所拥有的并不起作用。我仍然得到一个空数组

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);
for(var j=0;j

有谁能告诉我我做错了什么,并提供一些关于如何修复它的反馈吗?

我想你的意思是将
水管\u大小\u数组。长度
放在for循环中,而不是
水管\u大小\u数组
。此外,由于从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
但逻辑是完全错误的。如果只想消除重复项,请尝试以下操作:

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]);
    }
}
for(var j=0;j
如果您可以使用jQuery,有一个很好的方法可以实现这一点

var 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];
var new_water_pipes_size_array  = [];
new_water_pipes_size_array=$.map( water_pipes_size_array, function( value,index ) {
  return water_pipes_size_array[index+1]==value ? value : null;
});
console.log(new_water_pipes_size_array);

废话。非常感谢。我知道这可能很简单。你能解释一下为什么它要检查数组的索引是否不等于-1吗?哈,:)。我想知道,为什么我在新阵列中不断得到重复的数据,这是没有道理的。再次感谢。