如何通过迭代对象数组来删除某些项目
How to remove some items by iterating over the array of objects?
我想遍历对象数组并根据某些条件删除其中一些。
我使用拼接来移除项目,以保持有序的项目计数。
然后每次删除该项目时,我都会减少计数。
但由于某种原因,它永远不会起作用:
var arr=[{img:1},{img:2},{img:3},{img:4}];
for (var i=0, count= arr.length; i < count; ) {
if ( this.arr[i].img==3 ) {
this.arr.splice(i,1);
count--;
}else i++
};
alert(JSON.stringify(arr));
...有什么想法吗?
向后循环应该可以解决问题。这样可以避免在删除由于"撤退"值而删除条目时使用计数器和重置计数器。
var i;
for (i = arr.length; i--;) {
if (arr[i].img === 3) {
arr.splice(i, 1);
}
};
向后循环数组更简单,因此您不必调整迭代器:
var i = arr.length;
while ( i-- ) {
if ( arr[i].img == 3 ) {
arr.splice(i,1);
}
}
我以前也遇到过同样的困难。我的解决方案是遍历数组并组成另一个要删除的元素数组。反向循环浏览要删除的元素列表并删除它们。这对我来说效果很好。
迈克尔·
你指的是this.arr
,而不仅仅是arr
。
从代码中删除两个this.
,它就可以工作了。
尝试这个循环,我还没有测试过,但应该可以工作。
var arr=[{img:1},{img:2},{img:3},{img:4}];
for (var i=arr.length-1; i >= 0; i--) {
if ( arr[i].img==3 ) {
arr.splice(i,1);
}
};
alert(JSON.stringify(arr));
相关文章:
- 如何从 HTML 查询中删除项目
- 如何在NativeScript中从列表中删除项目时设置动画
- 删除项目时的JavaScript计算
- 如何从Firebase聊天中删除项目
- 使用 id 和 Javascript 从数组中删除项目
- JavaScript - 从框中删除项目名称
- 从mysql数据库中删除项目,然后返回最后一页
- 从数组中删除项目,为什么输出中的 for 和 for 不同
- 如何在获取时删除项目视图
- 在复选框取消选中事件中从HTML下拉列表中删除项目
- 从集合中删除项目时,将其从视图中删除
- 如何从状态数组中删除项目
- 如何使用javascript删除项目和清除表单
- KnockoutJS :如何从子数组中删除项目
- 如何从网格中删除项目时重置数组
- 是否可以通过使用 javascript 获取数组中的一个项目来删除项目
- 如果源 json 已更新(添加或删除项目),则动态更新 D3 旭日
- 使用 setTimeout() 函数从本地存储中删除项目
- 删除项目实际上并没有删除它
- 如何在 Angular 中使用拼接从列表中删除项目