JS:比较数组和添加新的项目或删除不再在数组中的项目
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分钟后,我再次检查DB并生成并替换数组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);
http://jsfiddle.net/y7czyn3h/http://davidwalsh.name/javascript-clone-array 您可以使用这种函数:
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
将是用。
相关文章:
- 有没有一种方法可以添加相同的项目val=“0”;4〃;到JavaScript中数组的每个对象
- 按不同项目对对象数组进行排序
- 使用JavaScript或jQuery检查单选按钮选择是否与数组中的项目匹配
- JS:从整个数组中每次得到5个项目,并得到平均值
- 使用圆中的数组更改背景颜色项目
- 编辑CSV数组中的项目-快速CSV node.js
- 我可以限制我添加到数组中的项目数量吗
- 使用javascript/jquery从现有数组中创建一个新数组,该数组保存项目存在的次数
- 什么's JavaScript数组中项目的作用域
- 将项目放入数组中
- 使用 id 和 Javascript 从数组中删除项目
- (角度.js)如何通过过滤器计算数组中有多少项目
- 如何通过迭代对象数组来删除某些项目
- Lodash 从与值数组不匹配的数组中获取项目
- 发布要形成的 n 个项目的数组
- 查找数组中项目包含子字符串的索引
- 使用节点在 JSON 数组中搜索项目(最好不迭代)
- Javascript:从数组中删除包含带有侦听器的对象的项目的最佳方法
- 更新挖空中可观察数组中项目的属性
- JavaScript:如何在 for 循环期间跳过数组中的当前项目?(继续?