我有一个对象,我需要将每个value
独立的对象与另一个类似的对象进行求和,如下例所示:
CharacterStats: { a: 0, b: 2, c: 0, d: 0 }
ItemStats: { a: 0, b: -1, c: 4, d: 0 }
结果应该是
CharacterStats: { a: 0, b: 1, c: 4, d: 0 }
我找到了这个答案,如何在javascript中求和两个对象值,但是我正在使用vueJS,所以我的函数看起来像这样:
export default {
data () {
return {
CharacterStats: { a:0, b:0, c:0, d:0 }
};
},
methods: {
calculStatsItems(ItemsStats) {
var obj = {};
Object.keys(this.CharacterStats ).forEach(function(a){
obj[a] = this.CharacterStats.stat[a] +ItemsStats[a]
})
console.log(obj);
}
},
}
但是我在此行上不断收到错误消息,告诉我“这是未定义的”:
Object.keys(this.CharacterStats ).forEach(function(a)
还有另一种方法可以解决或修复它吗?
在.forEach
函数中,this
不引用vue
组件实例,因此CharacterStats
变为undefined
。尝试这个:
const CharacterStats = { a: 0, b: 2, c: 0, d: 0 };
const ItemStats = { a: 0, b: -1, c: 4, d: 0 };
new Vue({
el:"#app",
data: () => ({
CharacterStats: { a: 0, b: 2, c: 0, d: 0 }
}),
created() {
this.calculStatsItems({ a: 0, b: -1, c: 4, d: 0 });
},
methods: {
calculStatsItems(ItemsStats) {
const obj = {};
Object.keys(this.CharacterStats).forEach(a => {
obj[a] = this.CharacterStats[a] + (ItemsStats[a] || 0)
});
console.log(obj);
}
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<div id="app"></div>
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句