2

我有以下内容;

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" });

但它不起作用。

4

2 回答 2

3

JavaScriptfilter是一种数组方法(参见文档)。您应该entities改为在对象的属性上调用它:

var objPillow = myRoom.entities.filter(function (entity) { 
  return entity.noun == "pillow" 
});
于 2013-11-13T00:26:21.567 回答
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
于 2013-11-13T00:27:25.273 回答