Javascript 循环行为真的很奇怪

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

我在一个循环中比较两个整数,这个循环通过一个包含JSON对象的数组。JSON对象包含一个ID和一个名称。当我点击窗口的关闭按钮时,该窗口应消失,其他窗口应保留,但如果我关闭ID最高的窗口,所有窗口都将关闭,例如,如果我关闭第五个窗口,则1-5窗口将关闭,但ID较高的窗口将保留

    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);

哦,对了,我完全忘了那样做。谢谢