Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何对Javascript/vuejs中的两个相似对象求和_Javascript_Vue.js_Object - Fatal编程技术网

如何对Javascript/vuejs中的两个相似对象求和

如何对Javascript/vuejs中的两个相似对象求和,javascript,vue.js,object,Javascript,Vue.js,Object,我有一个对象,我需要将每个值分别与另一个类似对象求和,如本例所示: 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 } 我找到了这个答案,但我使用的是vueJS,所以我的函数看起来像这样: export default { data () { return {

我有一个对象,我需要将每个
分别与另一个类似对象求和,如本例所示:

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 }
我找到了这个答案,但我使用的是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)

是否有其他方法来执行或修复此操作?

您可以获取这两个对象的值,然后执行以下操作:

sum(values) {
  return values.reduce((a, b) => a + b, 0);
}

calculStatsItems(arr1, arr2) {
  const prepareData = [...Object.values(arr1), ...Object.values(arr2)];
  return this.sum(prepareData);
}

.forEach
函数中,
不引用
vue
组件实例,因此
CharacterStats
变为
未定义
。试试这个:

constcharacterstats={a:0,b:2,c:0,d:0};
constitemstats={a:0,b:-1,c:4,d:0};
新Vue({
el:“应用程序”,
数据:()=>({
CharacterStats:{a:0,b:2,c:0,d:0}
}),
创建(){
this.calculStatsItems({a:0,b:-1,c:4,d:0});
},
方法:{
Calculstats(项目状态){
常量obj={};
Object.keys(this.CharacterStats).forEach(a=>{
obj[a]=this.CharacterStats[a]+(ItemsStats[a]| | 0)
});
控制台日志(obj);
}
}
});


这是否回答了您的问题?我只采用了这个方法,效果非常好!非常感谢不客气<代码>箭头功能
解决了该问题。