簡體   English   中英

如何獲得對象數組中對象的索引並進行拼接?

[英]How to get index of object in array of objects and splice it?

我正在使用angular 1.3,但他的問題可能僅與javascript有關。

我的候選人數組:

var candidates = [
  { "attr1": "lu", "attr2": "pizza" },
  { "attr1": "gina", "attr2": "sushi" },
  { "attr1": "hed", "attr2": "hummus" }
];

我的民族陣列:

var peoples = [
  { "attr1": "bob", "attr2": "pizza" },
  { "attr1": "john", "attr2": "sushi" },
  { "attr1": "larry", "attr2": "hummus" }
];

我也有一些復選框:

<div class="checkbox" ng-repeat="d in candidates ">
<label>
<input name="d[]" type="checkbox"ng-click="addRemove(d)" ng-value="d">
 {{d.attr1}}
</label>

所以我有一個功能(從候選對象)切換一個項目,我想添加或刪除(如果已經存在)

 $scope.addRemove = function (item) {      
            var idx = peoples.indexOf(item);
            if (idx > -1) {             
                peoples.splice(idx, 1);
            }
            else {
                peoples.push(item);
            }         
        };

由於某些原因, if (idx > -1)永遠不會為真,即使添加的項目已經存在,它也會保持添加狀態。

indexOf不會按值比較對象,而是按引用比較對象。 您可以執行以下操作。

(抱歉更新了我的答案以獲取“ idx”,如果存在則不提供)

你可以這樣做 :

var idx = peoples.map(function(p){ return p.attr2;}).indexOf(item.attr2);

if (idx) {             
            peoples.splice(idx, 1);
        }
        else {
            peoples.push(item);
        }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM