过滤对象内的对象数组

时间:2013-11-13 00:23:42

标签: javascript

我有以下内容;

var room = function(){
    this.entities = new Array();
}
var myRoom = new room();

我也有很多像这样的人;

var entity = function(){
    this.title = "A pillow";
    this.noun = "pillow";
}

我可以将许多实体推送到myRoom.entities数组中。

现在我想检查房间是否包含基于其名词的特定实体。

我尝试过这样的事情;

var objPillow = myRoom.filter(function (object) { return object.entities.noun == "pillow" });

但它不起作用。

2 个答案:

答案 0 :(得分:3)

JavaScript filter是一种数组方法(请参阅documentation)。您应该在对象的entities属性上调用它:

var objPillow = myRoom.entities.filter(function (entity) { 
  return entity.noun == "pillow" 
});

答案 1 :(得分:3)

根据您的短语“现在我想检查房间是否包含基于其名词的特定实体。”,因此您不需要实体本身,而是检查它的存在:

function check(noun){
  return myRoom.entities.some(function(a){ return a.noun === noun; })
}

var sample = new Entity();
sample.noun = "Test";
sample.title = "Anything";

myRoom.entities.push(sample);

check("Test"); //>>true