正在从列表中删除对象
removing object from list
我正在尝试删除javascript:中的对象列表项
$(document).ready(function () {
var eventObjs = [];
var idVal = 0;
$("#addItem").click(function () {
eventObjs.push([{ title: 'test', personId: idVal }]);
idVal += 1;
});
$("#removeItem").click(function () {
idVal -= 1;
eventObjs = eventObjs
.filter(function (el) {
return el.personId !== (idVal - 1);
});
$("#arrVal").html(eventObjs.length);
});
});
小提琴:http://jsfiddle.net/webdad3/51vbzne1/2/
我可以很好地添加我的元素。但当我试图移除它们时。什么都不管用。我哪里错了?
我从一个例子中得到了从数组中删除项的代码。也许问题不在于我在上面做错了什么,而是我需要做什么才能从列表中删除项目?
尝试
$(document).ready(function () {
var eventObjs = [];
var idVal = 0;
$("#addItem").click(function () {
eventObjs.push([{
title: 'test', personId: idVal
}]);
idVal += 1;
alert(eventObjs.length);
});
$("#removeItem").click(function () {
eventObjs.splice(-1);
idVal = idVal -1;
alert(idVal);
});
});
jsfiddlehttp://jsfiddle.net/51vbzne1/5/
这是因为您的筛选条件错误。
以下是正确的版本:http://jsfiddle.net/51vbzne1/3/
eventObjs = eventObjs.filter(function (el) {
return el.personId <= idVal;
});
解释:您应该进行筛选以检查每个personId
是否低于当前的idVal
。由于您在过滤之前执行idVal -= 1
,因此需要使用<=
。
或者,如果要删除特定项目。使用拼接,例如:eventObjs.splice(idVal, 1);
-
将
eventObjs.push([{ title: 'test', personId: idVal }]);
替换为eventObjs.push({ title: 'test', personId: idVal });
。现在您有了类似[[{title: 'test1'}], [{title: 'test2'}]]
的东西,而不是[{title: 'test1'}, {title: 'test2'}]
-
用
return el.personId !== idVal;
替换return el.personId !== (idVal - 1);
相关文章:
- 解析JSON并从中删除对象会出错
- 在特定条件下从存储在localStorage中的阵列中删除对象
- Es6:能够在设置/更新/删除对象属性时调用自定义方法
- 正在从列表中删除对象
- 删除对象时终止setInterval
- 在JavaScript中高效地删除对象
- 使用javascript(ajax,jquery?)从表中删除对象(用户等)
- 从范围中删除对象时,它会在 Angularjs 中隐藏其余对象
- 如何正确地从数组中删除对象
- 捕捉.svg — 单击其中一个元素时删除对象
- 如何删除对象数组中的对象:jquery
- 下划线.js,根据键值删除对象数组中的重复项
- 如何在Immutable中从数组中删除对象
- 删除对象属性在执行删除操作之前生效
- 使用indexOf从列表中删除对象
- 从数组中删除对象
- 如何使用.bind(this)删除对象的事件侦听器
- 正在创建事件侦听器以从本地存储中删除对象
- 如何通过引用(javascript)从数组中删除对象
- 如何按条件删除对象中的对象