2D数组比较-嵌套循环错误
2D arrays comparison - nested for loop error
我有下面的函数,它比较两个2D数组中的第一列值。
var new_array = [['EMI_007','lion','cat'],
['EMI_008','cat','dog']
];
var existing_array = [['EMI_002','cat','tiger'],
['EMI_004','hen','pig'],
['EMI_007','pigeon','hen'],
['EMI_001','boar','tiger']
];
将new_array[i][0]中的值与existing_array[j][0]的值进行比较。
如果它们相同,则整个行将被new_array
中的行替换,否则new_array
行将连接到现有阵列。
在上面的示例中,将new_array与existing_array进行比较。
EMI_007存在于"existing_array"中,因此它被['EMI_007','lion','cat']
替换,并且["EMI_008"、"cat"、"og"]被附加到现有阵列中。
我创建了以下函数,但似乎有一个错误。
如果在new_array中找到的具有EMI id的行在"existing_array"中不存在,则会多次插入该行。
function concat_2D_array(existing_array, new_array){
for (var i=0; i<new_array.length; i++) {
for (var j=0; j<existing_array.length; j++) {
if(new_array[i][0] == existing_array[j][0]){
alert("ok,it already exists in the existing_array");
existing_array.splice(j,1,new_array[i]);
}
else{
alert("It is not in the existing array");
// existing_array.concat(new_array[i]);
}
}
}
alert("returned existing_array"+existing_array)
return existing_array;
}
任何帮助都非常感谢
您的代码的主要问题是,您试图在每个步骤中将新项添加到现有数组中,并且在添加后不要离开循环。
function concat_2D_array(existing_array, new_array){
for (var i=0; i<new_array.length; i++) {
var j = 0;
while(j<existing_array.length){
if(new_array[i][0] == existing_array[j][0]){
alert("ok,it already exists in the existing_array");
existing_array.splice(j,1,new_array[i]);
break; // we found it, replaced it, leaving the loop
} else if (j+1 >= existing_array.length){
alert("It is not in the existing array");
existing_array.splice(j+1,0,new_array[i]);
break; // we didn't find it, added it, leaving the loop
} else {
j++;
}
}
}
alert("returned existing_array"+existing_array)
return existing_array;
}
相关文章:
- Knockout.js中带有if:子句的嵌套循环
- 有没有一种方法可以在所有嵌套循环之后放置一个标签,以便在一步中将它们全部打断
- JavaScript:在嵌套循环中为数组赋值
- Javascript嵌套循环匹配、组合、替换
- 在嵌套循环中处理 AJAX (Angularjs)
- knockout.js中的嵌套循环
- 在二维数组中搜索比嵌套循环更有效的方法
- 用于动态创建对象的嵌套循环
- 在javascript中嵌套循环
- JavaScript中的嵌入循环和嵌套循环之间有区别吗
- 嵌套循环中数组2d中的javascript变量丢失
- 嵌套循环javascript棋盘
- jQuery嵌套循环nextUntil选择器
- 如何使用嵌套循环使用 Javascript 打印到外部循环的输出中
- 如何在 Javascript 中创建一个模拟 100 行和 10 列网格的嵌套循环
- 如何避免嵌套循环
- 嵌套循环以添加数字
- 设置嵌套循环值返回错误“”;e.replace不是一个函数;
- 2D数组比较-嵌套循环错误
- 嵌套循环中的Sum返回错误