Javascript 循环行为真的很奇怪
我在一个循环中比较两个整数,这个循环通过一个包含JSON对象的数组。JSON对象包含一个ID和一个名称。当我点击窗口的关闭按钮时,该窗口应消失,其他窗口应保留,但如果我关闭ID最高的窗口,所有窗口都将关闭,例如,如果我关闭第五个窗口,则1-5窗口将关闭,但ID较高的窗口将保留Javascript 循环行为真的很奇怪,javascript,json,angularjs,Javascript,Json,Angularjs,我在一个循环中比较两个整数,这个循环通过一个包含JSON对象的数组。JSON对象包含一个ID和一个名称。当我点击窗口的关闭按钮时,该窗口应消失,其他窗口应保留,但如果我关闭ID最高的窗口,所有窗口都将关闭,例如,如果我关闭第五个窗口,则1-5窗口将关闭,但ID较高的窗口将保留 ctrl.items = [{ id: 1, name: "Number one" }, { id: 2, name: "Number
ctrl.items = [{
id: 1,
name: "Number one"
},
{
id: 2,
name: "Number two"
},
{
id: 3,
name: "Number three"
}];
ctrl.removeWindow = function(toBeRemovedId) {
console.log("Called: " + toBeRemovedId);
for (var i = ctrl.items.length - 1; i >= 0; i--) {
console.log(ctrl.items[i].id + " " + toBeRemovedId);
if(ctrl.items[i].id == toBeRemovedId) {
ctrl.items.splice(ctrl.items[i], 1);
}
};
}
<div class="window show" id="item_window" ng-repeat="item in itemWindowCtrl.items">
<hgroup>
<h1>{{ item.name}}</h1>
<button class="close" ><span class="fa fa-times fa-lg" ng-click="itemWindowCtrl.removeWindow(item.id)"></span></button>
</hgroup>
<section>
<p>{{ item.id + " " + item.name }}</p>
</section>
</div>
提前感谢您为我提供的任何线索。阵列拼接功能采用索引,而不是要删除的项,因此您应该只执行以下操作: ctrl.items.i,1 不过,循环有点不必要。为什么不直接通过要删除的项目,而不是按id降序循环查找匹配的id?例如: ng click=itemWindowCtrl.removeWindowitem 然后在控制器/指令中:
ctrl.items.patchectrl.items.indexOfitem,1 更改for循环以获取索引,然后删除该索引
var index = -1;
for (var i = 0; i < ctrl.items.length; i++) {
if(ctrl.items[i].id === toBeRemovedId) {
index = i;
}
};
ctrl.items.splice(index, 1);
哦,对了,我完全忘了那样做。谢谢