给定一个javascript对象数组,例如。
let objArray = [{a: 1, b: 2 , c:3},{a: 1, b:3, c:2},{a: 2, b:5, c:1}]
有没有一种更快的方法从满足特定条件(例如a = 1)的每个对象中获取所有b值,以返回类似
b_consolidated = [2,3]
而不是遍历数组中的每个对象?
最佳答案
如果使用reduce
,则只需要遍历一次数组:
let objArray = [{a: 1, b: 2 , c:3},{a: 1, b:3, c:2},{a: 2, b:5, c:1}]
let result = objArray.reduce((arr, val) => {
if(val.a === 1)
arr.push(val.b);
return arr;
}, []);
console.log(result);
这是最快的,没有手动
for
循环:let objArray = [{a: 1, b: 2 , c:3},{a: 1, b:3, c:2},{a: 2, b:5, c:1}]
let result = [];
for(var i = 0 ; i < objArray.length; i++){
if(objArray[i].a === 1)
result.push(objArray[i].b);
}
console.log(result);
Here's a JSPerf说明差异。
到目前为止,手动
for
循环是最快的。关于javascript - javascript模式匹配对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43973495/