我有两个对象组成的数组,其中又有另一个对象组成的数组,在下面的示例中,我希望对属性“值”的所有对象进行计数。
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
答案 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)
如果要单行执行,则可以使用map
和reduce
进行操作,map
创建一个新数组,其元素的长度为{{ 1}}属性和values
计算新数组元素的总和。这样就可以得出所有reduce
属性数组的长度总和。
这是下面的代码-
values
这是使用Angular 6的可工作Stackblitz
https://stackblitz.com/edit/hello-angular-6-ewa5tb?file=src/app/app.component.ts