2014-01-09 79 views
2

我想實現以下功能:如何在對象滿足特定條件時迭代對象內的數組?

迭代對象中的數組,其中​​的值爲woo hoo!

下面的工作,但我不知道這是最好的方式,因爲我認爲它會需要循環每個對象之前,它發現了一場比賽。

陣列

myArray = [{"k1": "woo hoo!", "k2": ["k2_1","k2_2","k2_3"], "k3": ["k3_v1"]},{"k1": "boo", "k2": ["k2_v1"], "k3": ["k3_v1"]}] 

的jQuery

$.each(myArray, function (obj, v) { 
    $.each(v.k2, function (i, value) { 
     if (v.k1 == "woo hoo!") { 
      alert(value); 
     } 
    }); 
}); 

下列包含該實施例中以及我已用於理解$.each更少數其他註釋例子。

http://jsfiddle.net/rwone/MnASV/5/

+1

不用於調試使用'的console.log(使用警報)' - http://jsfiddle.net/arunpjohny/PPrxZ/1/ –

+0

啊確定。會改變。 – user1063287

回答

4

你要做的唯一的變化是將德,如果條件進行第二循環的。

在你的情況下,​​屬於外部對象,但是你通過第二個循環迭代,即使值不匹配,可以通過檢查它來避免。

// iterate over array within each object 
$.each(myArray_1, function (obj, v) { 
    if (v.k1 == "woo hoo!") { 
     $.each(v.k2, function (i, value) { 
      console.log(value); 
     }); 
    } 
}); 

演示:Fiddle

+0

如果頂層數組中有許多對象,似乎需要迭代每個對象,然後執行與匹配的「if」條件相關的操作。我想知道是否有更快,更直接的方法來定義頂層''只是迭代一個具有這個特定屬性的對象?「。所以像'迭代這裏foo == bar'? – user1063287

+0

在我寫評論時,你的回覆已經得到了幾個讚揚,所以我猜測不,謝謝你的回答 - 可以在3分鐘內接受。 – user1063287

+1

@ user1063287 AFAIK沒有這樣的屬性...你可以看看[Array.filter()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array /過濾器)甚至遍歷每個元素來查找它是否滿足條件 –

相關問題