2015-07-20 114 views
1

我將如何去寫lodash下面的嵌套循環?什麼是最簡單的,,希望更多的語義,語法?Lodash嵌套循環搜索

for (var i = 0, m = 0, inner, item, needle = 'someval'; i < items.length; i++) { 
    item = items[i]; 

    for (m = 0; m < item.inners.length; m++) { 
     inner = item.inners[m]; 

     if (inner.id === needle) 
      return { items : item.id }; 
    } 
} 

回答

2

我想這會是這樣的

var item = _.find(items, function(item) { 
    return _.some(item.inners, { id: needle }); 
}); 

這讀起來像「找到具有至少一個內部件元素,ID爲針的項目」。

請參閱_.find_.some

如果你可以使用ES6:直到*** ***所有項目已比較

let item = items.find(({inners}) => inners.some(({id}) => id === needle)); 
+0

的第一個版本將不會終止。 ES6版本會提前終止嗎?希望它是儘可能高性能... +1 – culturalanomoly

+0

尋找類似於C#的'IEnumerable.First'的東西... – culturalanomoly

+1

是什麼讓你覺得呢?只要條件滿足,它們都會找到並停止。 –