Angular 6合并两个数组以计算键的长度

时间:2018-09-20 06:35:42

标签: javascript angular angular6

我有两个对象组成的数组,其中又有另一个对象组成的数组,在下面的示例中,我希望对属性“值”的所有对象进行计数。

var data = [
  { 
  "x": "123",
  "values": [
    { 
      "a": "1"
    }, 
   { 
     "b": "2" 
    }
  ] 
},   { 
  "y": "123",
  "values": [
    { 
      "a": "1"
    }, 
   { 
     "b": "2" 
    }
  ] 
}
];

我使用了以下逻辑:-

  let _data = data.RESULT;
      console.log(JSON.stringify(_data));
      _data.forEach(element => {
        this.someObj = element;
      });

预期结果应为values的length属性,即4

3 个答案:

答案 0 :(得分:3)

如果只想查找“值”数组的长度,则需要这样做

data = [
  { 
  "x": "123",
  "values": [
    { 
      "a": "1"
    }, 
   { 
     "b": "2" 
    }
  ] 
},   { 
  "y": "123",
  "values": [
    { 
      "a": "1"
    }, 
   { 
     "b": "2" 
    }
  ] 
}
]

length = 0;

constructor() {
  this.data.forEach((d) => {
    length = length + d.values.length;
  });
  console.log('length', length);
}

https://stackblitz.com/edit/angular-3daqcy?file=src%2Fapp%2Fapp.component.ts

答案 1 :(得分:1)

创建了一个添加values数组长度的函数

var arr = [
  { 
  "x": "123",
  "values": [
    { 
      "a": "1"
    }, 
   { 
     "b": "2" 
    }
  ] 
},   { 
  "y": "123",
  "values": [
    { 
      "a": "1"
    }, 
   { 
     "b": "2" 
    }
  ] 
}
]

function getKeysLength(arr){
  var count  = 0;
  arr.forEach((val)=>{count= count+ val.values.length})
  return count
}

var ans  = getKeysLength(arr);
console.log("ans",ans);

答案 2 :(得分:1)

如果要单行执行,则可以使用mapreduce进行操作,map创建一个新数组,其元素的长度为{{ 1}}属性和values计算新数组元素的总和。这样就可以得出所有reduce属性数组的长度总和。

这是下面的代码-

values

这是使用Angular 6的可工作Stackblitz

https://stackblitz.com/edit/hello-angular-6-ewa5tb?file=src/app/app.component.ts