如何在骨干js中搜索对象数组

时间:2014-06-06 18:07:55

标签: backbone.js

如何搜索骨干j中的对象数组。该集合包含人物模型。    

 [{
        name: "John",
        age: "18",
        likes: {
            food: "pizza",
            drinks: "something",
        }
     },
     ......
    ]

我怎样才能找到喜欢某事的人。 我确实试过collection.where({likes :{food : "pizza"}});

1 个答案:

答案 0 :(得分:0)

由于您的food属性位于Person属性的对象中,因此使用where(默认只查看平面属性)并不起作用。您可以使用filter方法将真值测试应用于集合中的所有项目,然后获取通过的项目。

在您发布的代码中,您看起来没有正确的Backbone Collection,只是一个常规的对象数组。

由于页面上有下划线,您可以使用它来帮助过滤列表。

var people =  [
   {
      name: "John",
      age: "18",
      likes: {
         food: "pizza",
         drinks: "something",
      }
   },
   ......
];

var likesPizza = _.filter(people, function(person) {
   return person.likes.food === "pizza";
});

如果它实际上是Backbone Collection,您可以使用

this.collection.filter(people, function(person) {
   return person.get('likes').food === "pizza";
});