2017-04-06 60 views
0

我坚持我如何总结两个Object这样总结两个Object值:如何在JavaScript

obj1 = { 
    'over_due_data': 10, 
    'text_data': 5 
} 

obj2 = { 
    'over_due_data': 20, 
    'text_data': 5 
} 

我去这个输出

obj = { 
    'over_due_data': 30, 
    'text_data': 10 
} 

一件事,不要使用for循环,合并和扩展。是否有可能将两个对象相加?

+0

你试过遍历对象的属性和得到他们的价值 – Tushar

+2

'不要使用for循环,合并或延长。“为什么不呢?它会更具活力。 – Ionut

+0

用户喜欢'Number(val1)+ Number(val2)+ Number(val3)'这会有帮助 –

回答

7

尝试用简单的使用Object.keys()Array#map()功能

obj1 = { 
 
    'over_due_data': 10, 
 
    'text_data': 5 
 
} 
 
obj2 = { 
 
    'over_due_data': 20, 
 
    'text_data': 5 
 
} 
 
var obj ={} 
 
Object.keys(obj1).map(function(a){ 
 
    obj[a] = obj1[a] +obj2[a] 
 

 
}) 
 
console.log(obj)

3

尝试是这样的,如果你不希望使用loop

obj1 = { 
 
     'over_due_data': 10, 
 
     'text_data': 5 
 
    } 
 
    
 
    obj2 = { 
 
     'over_due_data': 20, 
 
     'text_data': 5 
 
    } 
 
    var obj = {}; 
 
    obj['over_due_data'] = obj1['over_due_data'] + obj2['over_due_data'] 
 
    obj['text_data'] = obj1['text_data'] + obj2['text_data'] 
 

 
    console.log(obj)

+2

很多的唯一方法,如果他们不想使用一个for循环或类似。 – George

-1

试试这可能是有益的

obj1 = { 
 
    'over_due_data': 10, 
 
    'text_data': 5 
 
} 
 
obj2 = { 
 
    'over_due_data': 20, 
 
    'text_data': 5 
 
} 
 
var obj ={} 
 
Object.keys(obj1).map(function(a){ 
 
    obj[a] = obj1[a] +obj2[a] 
 

 
}) 
 
console.log(obj)

+0

这与prasad的回答有什么不同? – FakeCaleb

+1

您至少可以使用不同的标识符-_- –

1

另一种可能的解决方案,使用Array#reduce

var obj1 = {'over_due_data':10,'text_data':5}, obj2 = {'over_due_data':20,'text_data':5}, 
 
    obj = Object.keys(obj1).reduce(function(s,a) { 
 
     s[a] = obj1[a] + obj2[a]; 
 
     return s; 
 
    }, {}) 
 
    console.log(obj);

0

可以动态代码时:

var resultObject={}; 
Object.keys(obj1).map(function(objectKey, index) { 
    resultObject[objectKey]= obj1 [objectKey]+obj2[objectKey]; 

});