2017-05-29 72 views
-1

我有一個數組:如何變換JavaScript數組

var tab = []; 

      tab.push({key: 1,value: usa}); 
      tab.push({key: 2,value: germany}); 
      tab.push({key: 1,value: india}); 
      tab.push({key: 1,value: russsia}); 
      tab.push({key: 2,value: poland}); 
      tab.push({key: 1,value: uk}); 

而我正在試圖做的是把上述陣列接收:

[{"1":"usa,india,russia,uk"}, 
{"2":"germany,poland"}] 

我想有關鍵字段中的唯一值以及來自值字段的彙總值。

如何實現這個?

+2

'{ 「1」, 「美國,印度,俄羅斯,英國」}'是不是一個有效的js目的。你是不是指'{「1」:「美國,印度,俄羅斯,英國」} –

+0

@GokhanKurt - 是的,我的錯誤 – tylkonachwile

回答

4

var tab = []; 
 
tab.push({key: 1,value: 'usa'}); 
 
tab.push({key: 2,value: 'germany'}); 
 
tab.push({key: 1,value: 'india'}); 
 
tab.push({key: 1,value: 'russsia'}); 
 
tab.push({key: 2,value: 'poland'}); 
 
tab.push({key: 1,value: 'uk'}); 
 

 
var transformedObject = {}; 
 

 
tab.forEach(function (item) { 
 
    transformedObject[item.key] = transformedObject[item.key] ? `${transformedObject[item.key]}, ${item.value}` : item.value; 
 
}); 
 

 
console.log(transformedObject); 
 

 
// Access the '2' property 
 
console.log(transformedObject['2']);

+0

OMG,謝謝。 – tylkonachwile

+0

如果我很好理解,這是一個對象數組? 如何從這個數組中獲得「2」? 我想將轉換對象的密鑰傳遞給另一個函數。 – tylkonachwile

+0

這是一個簡單的對象,使用'transformedObject ['2']'。我更新了我的回答:) – Erazihel

0

使用reduce

const orig = [{ key: 1, value: 'usa' }, { key: 1, value: 'russia' }, { key: 2, value: 'uk' }]; 
 

 
const result = orig.reduce((red, el) => { 
 
    if (red[el.key] !== undefined) { 
 
    red[el.key] += `, ${el.value}`; 
 
    } else { 
 
    red[el.key] = el.value; 
 
    } 
 
    return red; 
 
}, {}); 
 

 
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

相關問題