我有一個數組,看起來這個樣子的 -使用_.each找到對象數組
list = [{"doc":{"id": "123", "name":"abc"}}, {"doc":{"id": "345", "name":"xyz"}},{"doc":{"id": "123", "name":"str"}}]
我如何使用_.each方法使用id =「123」檢索文檔對象?任何幫助是極大的讚賞。
乾杯!
我有一個數組,看起來這個樣子的 -使用_.each找到對象數組
list = [{"doc":{"id": "123", "name":"abc"}}, {"doc":{"id": "345", "name":"xyz"}},{"doc":{"id": "123", "name":"str"}}]
我如何使用_.each方法使用id =「123」檢索文檔對象?任何幫助是極大的讚賞。
乾杯!
閱讀jQuery.each如何處理break;
var object_with_id_123;
$.each(list, function(key, val){
if (val.doc.id == "123") {
object_with_id_123 = val;
return false; // break;
}
return true; // continue; - just to satisfy jsLint
});
console.log(object_with_id_123);
感謝那些幫助:) – verdure
var list = [{"doc":{"id": "123", "name":"abc"}}, {"doc":{"id": "345", "name":"xyz"}},{"doc":{"id": "123", "name":"str"}}]
var olist = [];
$.each(list,function(key, value){
if(value.doc.id =="123"){
olist.push(value);
}
})
$.each(olist,function(key, value){
alert(JSON.stringify(value))
})
,因爲你有2個結果與編號123我已經添加了陣列結果。如果你有1個結果,你可以返回obj.doc,而不是添加它導致
var result = [];
$.each(list, function(index, obj) {
if(obj.doc.id == 123) {
result.push(obj.doc);
}
});
其實,_.detect會多出一個適當的功能來解決這個問題:
var list = [
{"doc":{"id": "123", "name":"abc"}},
{"doc":{"id": "345", "name":"xyz"}},
{"doc":{"id": "123", "name":"str"}}
];
_.detect(list, function (obj) {return obj.doc.id === "123"});
結果:
{"doc":{"id": "123", "name":"abc"}}
另外,如果你想使用id =「123」返回兩個對象,那麼你合作用_.select替代_.detect。
_.select(list, function (obj) {return obj.doc.id === "123"});
結果:
[{"doc":{"id": "123", "name":"abc"}}, {"doc":{"id": "123", "name":"str"}}]
'_.each'是Underscore.js,而不是從jQuery的... – ThiefMaster