Javascript 从Vue.JS中的子对象收集值并指定给父对象键
以下是数据“valueContainer”的外观:Javascript 从Vue.JS中的子对象收集值并指定给父对象键,javascript,object,vue.js,vuejs2,Javascript,Object,Vue.js,Vuejs2,以下是数据“valueContainer”的外观: { "totalValue": 0, "subValues1": [ { "value": 20 },{ "value": 30 } ], "subValues2": [ { "value": 10 },{ "value": 40 } ] } 我正在尝试从“subValues1”和“subVal
{
"totalValue": 0,
"subValues1": [
{ "value": 20 },{ "value": 30 }
],
"subValues2": [
{ "value": 10 },{ "value": 40 }
]
}
我正在尝试从“subValues1”和“subValues2”中收集值,并将它们存储在“totalValue”字段中?我一直在尝试使用computed,但for循环不起作用,下面是一个尝试从第一个子对象累积值的示例
computed: {
totalValue: function() {
let total;
for (let v in this.valueContainer.subValues1) {
total = total + v.value;
}
return total;
}
}
如前所述,我得到的总价值为NaN。我如何循环遍历这些值、累加这些值并将它们存储为totalValue
链接到codepen:您可以获取密钥,按不需要的值进行过滤,并迭代值数组。然后将这些值添加到总数中
var data={valueContainer:{totalValue:0,subValues1:[{value:20},{value:30}],subValues2:[{value:10},{value:40}]};
对象
.key(data.valueContainer)
.filter(v=>v!=='totalValue')
.forEach(k=>data.valueContainer[k].forEach(({value})=>data.valueContainer.totalValue+=value));
控制台日志(数据)代码>这是一个工作组件:
{{totalValue}}
const sum=list=>list.reduce((acc,value)=>acc+value,0);
导出默认值{
数据(){
返回{
valueContainer:{
子值1:[{value:20},{value:30}],
子值2:[{value:10},{value:40}],
},
};
},
计算:{
totalValue(){
const{subValues1,subValues2}=this.valueContainer;
常量值=[…子值1,…子值2].map({value})=>value);
返回和(值);
},
},
};
如果您正在使用,您可以使用sumBy
:
从“lodash/sumBy”导入sumBy;
导出默认值{
数据(){
返回{
valueContainer:{
子值1:[{value:20},{value:30}],
子值2:[{value:10},{value:40}],
},
};
},
计算:{
totalValue(){
const{subValues1,subValues2}=this.valueContainer;
返回sumBy([…子值1,…子值2],“值”);
},
},
};
子值1
和子值2
应该是数组。感谢您捕捉到这一点。它实际上是一个数组,现在编辑您的数据是无效的javascript顺便说一句。您可以创建一个代码笔吗?这里是:是的,您可以访问值,如sothis.valueContainer.subValues1[v]
,或者使用其他迭代,如for…of loop,array.forEach