给定一个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/

10-11 21:42