好的,有几种方法可以做到这一点,但让我们从最简单和最新的方法开始,这个函数被称为find()
.
使用时要小心find
,因为即使 IE11 也不支持它,所以它需要被转译......
所以你有这个对象,正如你所说:
var jsObjects = [
{a: 1, b: 2},
{a: 3, b: 4},
{a: 5, b: 6},
{a: 7, b: 8}
];
你可以编写一个函数并像这样得到它:
function filterValue(obj, key, value) {
return obj.find(function(v){ return v[key] === value});
}
并使用这样的功能:
filterValue(jsObjects, "b", 6); //{a: 5, b: 6}
同样在ES6中用于更短的版本:
const filterValue = (obj, key, value)=> obj.find(v => v[key] === value);
此方法仅返回匹配的第一个值...,为了更好的结果和浏览器支持,您可以使用filter
:
const filterValue = (obj, key, value)=> obj.filter(v => v[key] === value);
我们将返回[{a: 5, b: 6}]
...
此方法将返回一个数组而不是...
您也可以简单地使用 for 循环,创建一个这样的函数:
function filteredArray(arr, key, value) {
const newArray = [];
for(i=0, l=arr.length; i<l; i++) {
if(arr[i][key] === value) {
newArray.push(arr[i]);
}
}
return newArray;
}
并这样称呼它:
filteredArray(jsObjects, "b", 6); //[{a: 5, b: 6}]