使用_.each查找数组中的对象

ver*_*ure 0 javascript underscore.js

我有一个看起来像这样的数组 -

     list = [{"doc":{"id": "123", "name":"abc"}}, {"doc":{"id": "345", "name":"xyz"}},{"doc":{"id": "123", "name":"str"}}]
Run Code Online (Sandbox Code Playgroud)

如何使用_.each方法检索id ="123"的doc对象?任何帮助是极大的赞赏.

干杯!

Mar*_*den 15

实际上,_.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"});
Run Code Online (Sandbox Code Playgroud)

结果:

{"doc":{"id": "123", "name":"abc"}}
Run Code Online (Sandbox Code Playgroud)

或者,如果您想要返回id ='123'的两个对象,则可以使用_.select替换_.detect.

_.select(list, function (obj) {return obj.doc.id === "123"});
Run Code Online (Sandbox Code Playgroud)

结果:

[{"doc":{"id": "123", "name":"abc"}}, {"doc":{"id": "123", "name":"str"}}]
Run Code Online (Sandbox Code Playgroud)


rod*_*ehm 5

阅读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);
Run Code Online (Sandbox Code Playgroud)