簡體   English   中英

遍歷對象和嵌套的for循環遍歷數組

[英]Looping through an object and a nested for loop that loops through array

我正在遍歷一個對象,然后在每個對象上將其與數組中的項目進行比較,以期將不相同的對象推送到我的ItemsNotInObject數組中。 希望有人可以為我照亮一點。 先感謝您。

var obj = {a:1, a:2, a:3};
var array = [1, 4, 2, 5, 6];
var ItemsNotInObject = [];


for (var prop in obj) {
    for(var i = 0, al = array.length; i < al; i++){
       if( obj[prop].a !== array[i] ){
           ItemsNotInObject.push(array[i]);
        }
    }
}

console.log(ItemsNotInObject);
//output of array: 1 , 4 , 2 , 5, 6

//output desired is: 4 , 5 , 6

如果可以將obj變量設置為數組,則可以采用這種方式;

var obj = [1, 2, 3];
var array = [1, 4, 2, 5, 6];
var ItemsNotInObject = [];


    for(i in array){
       if( obj.indexOf(array[i]) < 0) ItemsNotInObject.push(array[i]);
    }

console.log(ItemsNotInObject);

如果obj變量需要是json對象,請提供它的正確形式,以便我可以根據它更改代碼。

  1. 您的對象具有重復的鍵。 不是有效的 JSON對象。 使它們獨特
  2. 不要訪問obj[prop].a類的對象值, obj[prop] a
  3. 克隆原始數組。
  4. 使用indexOf()檢查數組是否包含對象屬性。
  5. 如果是這樣,請將其從克隆的陣列中刪除。

 var obj = { a: 1, b: 2, c: 3 }; var array = [1, 4, 2, 5, 6]; var ItemsNotInObject = array.slice(); //clone the array for (var prop in obj) { if (array.indexOf(obj[prop]) != -1) { for (var i = 0; i < ItemsNotInObject.length; i++) { if (ItemsNotInObject[i] == obj[prop]) { ItemsNotInObject.splice(i, 1); //now simply remove it because it exists } } } } console.log(ItemsNotInObject); 

暫無
暫無

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

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