簡體   English   中英

以數組作為值循環遍歷對象的對象

[英]Loop through an object of objects with arrays as values

所以我有一個這樣的對象:

{
  "apples": [
    "one",
    "two"
  ],
  "oranges": [
    "three",
    "four"
  ]
}

我如何看待這個對象,例如找到four 就像是:

for (var i=0; i < obj.length; i++) {
  for (var y=0; y <obj.childObj.length; y++ {
    obj.childObj[i] === 'four' ? return : null;
  }
}

還是有更好的方法來構造這些數據?

for(var x in obj)
 if(obj.hasOwnProperty(x)) {
  for(var y in obj[x])
   if(obj[x].hasOwnProperty(y)) {
    obj[x][y] === 'four' ? doSomething() : doSomethingElse();
   }
  }

編輯:Matthew Herbst建議的改進

您可以for (x in y)陳述式:

var data = {
  "apples": [
    "one",
    "two"
  ],
  "oranges": [
    "three",
    "four"
  ]
};

for (var key in data) {
    var obj = data[key];
    for (var i=0; i <obj.length; i++) {
        // obj[i] === 'four' ? return : null;
        console.log(obj[i]);
    }
}

這將打印:

one
two
three
four

如果要查找此對象在某處是否有四個,則

var isFourAvailable = Object.keys(obj).filter(function(val){ return obj[val].indexOf("four") != -1 }).length > 0;

使它更通用

function findX(x)
{
   return Object.keys(obj).filter(function(val){ return obj[val].indexOf(x) != -1 }).length > 0;
}

嘗試這個 ;)

修改了您的代碼;

for (var i = 0; i < obj.length; i++) {
  for (var y = 0; y < obj[i].length; y++ {
    if(obj[i][y] === 'four'){
      console.log("It's four");
    }
  }
}

您可以使用indexOf

   var x={
      "apples": [
        "one",
        "two"
      ],
      "oranges": [
        "three",
        "four"
      ]
    }
    for (var e in x) {
      if (x[e].indexOf("four") > -1)
        console.log("found Four");
    }

暫無
暫無

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

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