簡體   English   中英

將單個對象轉換為對象數組

[英]Transform a single object into an array of objects

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

{
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];
  }
}

您可以使用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); 

您可以在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); 

這應該工作。

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

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

您應該為對象中的每個鍵推入一個對象:

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

您可以使用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); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM