通过JavaScript对象数组中的id查找对象
我有一个数组:
myArray = [{'id':'73','foo':'bar'},{'id':'45','foo':'bar'}, etc.]
  我无法改变数组的结构。  我被传递了一个45的id,并且我想要为该对象在数组中获得'bar' 。 
我如何在JavaScript中使用或使用jQuery?
myArray.find(x => x.id === '45').foo;
来自MDN:
  如果数组中的元素满足提供的测试函数,则find()方法返回数组中的值。  否则返回undefined 。 
  如果您想获取匹配元素的数组,请改用filter()方法: 
myArray.filter(x => x.id === '45');
  这将返回一个对象数组。  如果你想得到一个foo属性数组,你可以用map()方法来做到这一点: 
myArray.filter(x => x.id === '45').map(x => x.foo);
  注意:诸如find()或filter()和箭头函数等方法不适用于旧版浏览器(如IE),所以如果你想支持这些浏览器,你应该使用Babel来编译你的代码。 
由于您已经在使用jQuery,因此您可以使用用于搜索数组的grep函数:
var result = $.grep(myArray, function(e){ return e.id == id; });
  结果是一个包含找到的项目的数组。  如果您知道该对象始终存在,并且只出现一次,则可以使用result[0].foo来获取该值。  否则,你应该检查结果数组的长度。  例: 
if (result.length == 0) {
  // not found
} else if (result.length == 1) {
  // access the foo property using result[0].foo
} else {
  // multiple items found
}
另一个解决方案是创建一个查找对象:
var lookup = {};
for (var i = 0, len = array.length; i < len; i++) {
    lookup[array[i].id] = array[i];
}
... now you can use lookup[id]...
如果你需要做很多查找,这特别有趣。
这将不需要更多的内存,因为ID和对象将被共享。
链接地址: http://www.djcxy.com/p/9431.html