通过属性值从对象数组中获取JavaScript对象
这个问题在这里已经有了答案:
var result = jsObjects.filter(function( obj ) {
return obj.b == 6;
});
查看Array.prototype.filter()上的MDN Docs
jsObjects.find(x => x.b === 6)
来自MDN:
如果数组中的元素满足提供的测试函数,则find()
方法返回数组中的值。 否则返回undefined
。
注意:老式浏览器(如IE)不支持像find()
和arrow函数这样的方法,所以如果你想支持这些浏览器,你应该使用Babel来编译你的代码。
我不知道你为什么反对for循环(大概你的意思是一个for循环,不是专门用于...... in),它们快速且易于阅读。 无论如何,这里有一些选项。
For循环:
function getByValue(arr, value) {
for (var i=0, iLen=arr.length; i<iLen; i++) {
if (arr[i].b == value) return arr[i];
}
}
。过滤
function getByValue2(arr, value) {
var result = arr.filter(function(o){return o.b == value;} );
return result? result[0] : null; // or undefined
}
.forEach
function getByValue3(arr, value) {
var result = [];
arr.forEach(function(o){if (o.b == value) result.push(o);} );
return result? result[0] : null; // or undefined
}
另一方面,如果你确实意味着for..in并且想要找到一个值为6的属性的对象,那么除非你传递名称来检查,否则你必须使用for..in。 例如
function getByValue4(arr, value) {
var o;
for (var i=0, iLen=arr.length; i<iLen; i++) {
o = arr[i];
for (var p in o) {
if (o.hasOwnProperty(p) && o[p] == value) {
return o;
}
}
}
}
链接地址: http://www.djcxy.com/p/27225.html
上一篇: Get JavaScript object from array of objects by value of property