【发布时间】:2016-03-13 06:49:22
【问题描述】:
我有两个数组,
var original = [10,80,30,100,160];
var edited = [80,120,140,70,160,30];
从上面,
我需要比较并获取哪些所有元素都存在于“已编辑”数组中但不存在于“原始”数组中。
还有,
需要获取“原始”中存在但“已编辑”中不存在的元素。
所以输出应该如下,
Added Elements 120,140,70
Deleted Elements 10,100
我写的代码如下,
var fn100 = function(){
var original = [10,80,30,100,160];
var edited = [80,120,140,70,160,30];
var newlyAdded = [];
var dropped = [];
var isFound = false;
var x = 0, y = 0;
//for added
for(x = 0; x < edited.length; x++){
isFound = false;
for(y = 0; y < original.length; y++){
if(edited[x] === original[y]){
isFound = true;
break;
}
}
if(isFound === false){
newlyAdded.push(edited[x]);
}
}//for added
//for dropped
for(x = 0; x < original.length; x++){
isFound = false;
for(y = 0; y < edited.length; y++){
if(original[x] === edited[y]){
isFound = true;
break;
}
}
if(isFound === false){
dropped.push(original[x]);
}
}// for dropped
print("Added Elements "+newlyAdded);
print("Deleted Elements "+dropped);
}
fn100();
从上面的代码你可以看到我写了两个 for 循环,即添加和删除。
有没有更好的逻辑来做到这一点?
请给我建议。
【问题讨论】:
-
我真的不认为这个问题是重复的。他不是在问如何进行差异化,而是在问代码。他在问如何更有效地进行两个差异。
标签: javascript arrays data-structures logic