簡體   English   中英

將值推入多維數組

[英]Pushing value into a multidimensional array

我已經解決了這個問題,但無法獲得任何可能的解決方案..

假設我有一個像這樣的變量

var data = [
           {
              'a':10,
              'b':20,
              'c':30
           },
           {
              'a':1,
              'b':2,
              'c':3
           },
           {
              'a':100,
              'b':200,
              'c':300
           }];

現在,我需要一個多維數組

var values = [[10,1,100],    //a
              [20,2,200],    //b
              [30,3,300]];   //c

我試過的是

var values = [];
for(var key in data[0])
{
   values.push([]);   // this creates a multidimesional array for each key
   for(var i=0;i<data.length;i++)
   {
     // how to push data[i][key] in the multi dimensional array
   }
}

注意: data.length鍵的數量不斷變化,我只想使用push()而不需要任何額外的變量。 即使我不想使用額外的for循環

如果你們在這里發現任何重復,只需將鏈接作為評論而不用downvote

嘗試這個:

var result = new Array();

for(var i = 0; i < data.length; i++) {
  var arr = new Array();
  for(var key in data[i]) {
    arr.push(data[i][key]);
  }
  result.push(arr);
}

如果您不希望'arr'變量直接寫入結果,但在我看來,上面的代碼更容易理解:

for(var i = 0; i < data.length; i++) {
  result.push(new Array());
  for(var key in data[i]) {
    result[i].push(data[i][key]);
  }
}

好的,根據你的評論,我修改了循環。 如果您需要,請檢查解決方案並將問題標記為已回答。 就個人而言,我不明白你為什么喜歡凌亂而難以理解的代碼,而不是使用額外的變量,但這是完全不同的主題。

for(var i = 0; i < data.length; i++) {
  for(var j = 0; j < Object.keys(data[0]).length; j++) {
    result[j] = result[j] || new Array();
    console.log('result[' + j + '][' + i + ']' + ' = ' + data[i][Object.keys(data[i])[j]])
    result[j][i] = data[i][Object.keys(data[i])[j]];
  }
}

暫無
暫無

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

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