从阵列中获取唯一对象的更好方法

时间:2017-07-10 06:25:54

标签: javascript jquery arrays

我有一个包含对象的数组。每个对象都有一个唯一的ID。从数组中获取特定对象的最佳方法是什么?

目前我使用的是这样的

  this.getObjectById = function(objectId){
    return $.grep(this.objects, function(e){ return e.id === objectId; })[0];
  }

但事实是

$.grep();

返回一系列结果我不知道我是否应该这样做。因为目前我采用了这个数组的第一个元素并且它很好,因为我只有一个元素。

但是有更干净的方式吗?

Array.prototype.find()

更好的一个?

2 个答案:

答案 0 :(得分:1)

查找更快,因为它返回第一个匹配,而jquery grep循环遍及整个数组。如果您需要完整的浏览器支持,只需创建自己的功能:

this.getObjectById = function(objectId){
  for(var i = 0; i<this.objects.length; i++){
    if(objectId == this.objects[i].id) return this.objects[i];
  }
  return null;
}

答案 1 :(得分:0)

使用underscore.js _.find()方法迭代您的收藏。