2017-04-06 49 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]; 

});