有时候我们需要遍历对象中的属性取值去做一些事情,但是对象没有for循环的方法,这时候我们可以取出对象中属性名字为数组然后遍历取值
比如我们要遍历下面这个对象:计算得分的总和
{
"哪年": {
"type": "circularRadio",
"name": "哪年",
"value": "0",
"items": [
{
"label": "1",
"value": "1"
},
{
"label": "0",
"value": "0"
}
]
},
"哪年得分": {
"type": "appendtext",
"name": "哪年得分",
"value": "0"
},
"季节": {
"type": "circularRadio",
"name": "季节",
"value": "1",
"items": [
{
"label": "1",
"value": "1"
},
{
"label": "0",
"value": "0"
}
]
},
"季节得分": {
"type": "appendtext",
"name": "季节得分",
"value": "1"
}
}
我们可以这样做:
先通过Object.keys将对象转换为键值对形式,然后再过滤一下计算总和的属性,然后再循环取属性的值计算
Object.keys之后会得到[‘哪年’,‘哪年得分’, ‘季节’, ‘季节得分’]
filter过滤之后就会得到[‘哪年得分’, ‘季节得分’]
循环这个数组 取对象中的值 就可以得出总和
let 总分 = 0;
Object.keys(fieldsFlat).filter(a => a.endsWith("得分")).forEach(item => {
总分 += valueUtil.valueTransformNumber(
fieldsFlat[item].value
);
});