[英]JS: Comparing Arrays and adding new items or removing items no longer in array
当我查询数据库中的项目时,会生成一个数组,例如
ArrayOne = [Apple, Banana, Orange, Banana]
//yes, an item can be there twice or more
然后我将其复制到ArrayOne_Copy = ArrayOne
好的,然后间隔5分钟后,我再次检查数据库并生成并替换数组ArrayOne
现在说的就像
ArrayOne = [Apple, Peach, Banana, Pineapple, Banana, Melon]
在这一点上,我想将ArrayOne_Copy
与新生成的ArrayOne
进行比较,并从新列表重建列表,但不清除列表并生成新的输出,但是我只想添加新项或删除不再存在的项。名单
如果我可以“讲”代码,我会告诉脚本:
Don't touch `Apple` because has not changed
Push 'Peach" between `Apple` and `Banana`
Push `Pineapple` between `Banana` and `Banana`
Remove `Orange`
Add `Melon`
所以。 我有点迷路了,也许解决方法很简单。 您可以提出最佳做法吗?
您不是在复制它,而是在引用它。
您需要制作一个数组的硬拷贝,可以使用slice()
。
var ArrayOne_Copy = ArrayOne.slice(0);
例如:
var ArrayOne = ['Apple', 'Banana', 'Orange', 'Banana'];
var ArrayOne_Copy = ArrayOne.slice(0);
ArrayOne.push('Melon');
console.log(ArrayOne);
console.log(ArrayOne_Copy);
您可以使用这种功能:
Array.prototype.complete = function( arr ){
var result = new Array();
for( var a in arr )
result[ a ] = this[ a ] ? this[ a ] : arr[ a ];
return result;
}
像这样 :
ArrayFull = ArrayOne_Copy.complete( ArrayOne );
然后ArrayFull
将是使用修改的数组。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.