2017-07-14 125 views
1

我有一個對象,其中包含不同單詞的出現次數。它看起來像這樣:將單個對象轉換爲對象數組

{ 
Word1 : 1, 
Word2 : 1, 
Word3 : 2, 
Word4 : 3 
} 

我想有一個數組,看起來像這樣:

[ 
{word:Word1, count:1}, 
{word:Word2, count:1}, 
{word:Word3, count:2}, 
{word:Word4, count:3}, 
] 

我查了一下四周,發現這個代碼,通過對象循環和獲取值我想:

for (var key in p) { 
    if (p.hasOwnProperty(key)) { 
    console.log(key + " -> " + p[key]); 
    } 
} 

我試圖創建一個空數組,並使用push來獲得它的預期值,但我似乎並沒有得到它的竅門。我覺得類似的規定應該得到我的結果,我想:

for (var key in p) { 
    if (p.hasOwnProperty(key)) { 
    //Here is where the code should go, something like : 
    myNewObject[i].word = key; 
    myNewObject[i].count = p[key]; 
    } 
} 
+1

應該不是最後一個是'word4'? –

回答

5

您可以使用Object.keysmap

var obj = { 
 
Word1 : 1, 
 
Word2 : 1, 
 
Word3 : 2, 
 
Word4 : 3 
 
} 
 

 
var array = Object.keys(obj).map((key) => ({ 
 
    word: key, 
 
    count: obj[key] 
 
})); 
 

 
console.log(array);

0

您可以在Object.keys使用reduce()此:

let o = { 
 
    Word1: 1, 
 
    Word2: 1, 
 
    Word3: 2, 
 
    Word4: 3 
 
}; 
 

 
let arr = Object.keys(o).reduce((a, b) => a.concat({ 
 
    word: b, 
 
    count: o[b] 
 
}), []); 
 

 
console.log(arr);

0

這應該有效。

const start = { 
    Word1 : 1, 
    Word2 : 1, 
    Word3 : 2, 
    Word4 : 3 
}; 

const finish = Object.keys(start).map(k => { word: k, count: start[k] }); 
0

你應該推動的對象對象中的每個關鍵:

var result = []; 
for (var key in p) { 
    if (p.hasOwnProperty(key)) { 
    result.push({ 
     word: key, 
     count: p[key] 
    }); 
    } 
} 
0

您可以使用Object.keys()通過對象中的每個鍵進行迭代。 使用map()forEach()以獲得所需的結果。

let o = { 
 
    Word1: 1, 
 
    Word2: 1, 
 
    Word3: 2, 
 
    Word4: 3 
 
}; 
 

 
var result = []; 
 

 
Object.keys(o).forEach(function(x){ 
 
    result.push({word: x, count : o[x]}); 
 
}); 
 

 
console.log("Result with forEach :" ,result); 
 

 
var resultWithMap = Object.keys(o).map(x => 
 
    ({ word : x, count : o[x] })); 
 

 
console.log("Result with map :" , resultWithMap);