Javascript 在阵列中检查重复项时出现问题
我知道这已经被问了很多次了,但我看到的答案都没有帮助。这就是我的问题 我有一个数组,它根据从列表中选择的内容动态填充get。有时,推送的数组值将具有多个相同的值。我想获取该数组的值,查找该值是否已存在于该数组中,并将其推送到新数组中。我有两个默认为空的全局数组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的示例
//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吗?哈,:)。我想知道,为什么我在新阵列中不断得到重复的数据,这是没有道理的。再次感谢。