你能比较两个余烬物吗?

Dar*_*han 3 ember.js ember-data

我从我的数据库中提取了许多对象作为searchResult对象(我已经定义和设置的模型).

现在我需要将这些对象放在JS数组中 - 如果它们尚未存在于它们中.JS数组有一个"if --- in array",但它没有真正比较自定义对象.最简单的解决方案是使用双循环并使用数组中每个已存在的对象检查每个传入对象,但我的searchResult对象具有几个我无法花时间比较的属性.

那么有没有办法检查,例如,Ember本身是否(se​​archResult1 == searchResult2)?

我知道有一种类似的混合,但我不确定这是否有帮助 - 甚至如何使用它.

DRo*_*son 7

Ember为addObjectArray原型提供了一种有用的方法来解决这类问题.arr.addObject(item)将注入itemarr如果该项目已不存在.

http://emberjs.com/api/classes/Ember.MutableArray.html#method_addObject:

var cities = ["Chicago", "Berlin"];
cities.addObject("Lima");    // ["Chicago", "Berlin", "Lima"]
cities.addObject("Berlin");  // ["Chicago", "Berlin", "Lima"]
Run Code Online (Sandbox Code Playgroud)

还有addObjects,它接受一系列项目并添加每个项目尚未出现:arr.addObjects([itemA, itemB, itemC]).

编辑:正如GJK正确指出的那样,这是用实现的===,因此对于复杂的对象,它比较引用而不是值.因此,如果您要添加Ember模型,或者如果您要添加Primatives,这将正常工作,但如果您只是简单地比较对象,则会失败.

标准Javascript也是如此([1] === [1] // => false但是var i = [1]; i === i // => true)