通过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