簡體   English   中英

如何通過for循環填充關聯數組

[英]How to populate associative array through for loop

我需要在我的數組中創建這種元素:

{ Field1: "2011/04/23", Field2: 8, Field3: "Adam", Field4: "Den"},  
{ Field1: "2011/03/25", Field2: 6, Field3: "Honey",Field4: "Singh"}   

我怎樣才能增加那個字段1計數器?

var resultado = [];
    for(i=0;  i< dados.length; i++){                
        resultado[i] = { "Field"+i: dados[columns[i]]};
    }  

如果我嘗試像上面這樣做,它會給我一個錯誤,說我不能使用+字符。 我怎樣才能實現目標?

Obs:我不會總是有4個字段,可能會有所不同。

UPDATE

根據答案,我可以實現我需要的一部分,現在代碼是這樣的:

var resultado = [];
    for(i=0;  i< dados.length; i++){                
        resultado[i] = { ["Field"+i]: dados[columns[i]]};
    }    

但是我沒有設法在陣列的單個位置寫下所有這些。
我怎么能得到這個:

var results = [
      {
       Field1: "2011/04/23",
       Field2: 8,
       Field3: "Adam",
       Field4: "Den"  
      }, //First Element  

      {
       Field1: "2011/03/25",
       Field2: 6,
       Field3: "Honey",
       Field4: "Singh"  
      } //Second Element
    ];  

我正在使用JqueryDataTable,所以我需要創建一個obj來以dinamically方式填充它。

我有一個ajax,它返回一個帶有name of the columns Json。

["id_localidade","cod_munic","id_bairro","id_endereco"]  
//These are column names that I need to use later.  

然后我有另一個Ajax給我帶來與Json相同的表中的DATA:

[  
{"id_bairro":"1","dsc_bairro":"PONTE DOS CARVALHOS"},  
{"id_bairro":"2","dsc_bairro":"CHARNECA"},  
{"id_bairro":"3","dsc_bairro":"SAO FRANCISCO"},  
{"id_bairro":"4","dsc_bairro":"ROSARIO"}  
]  

所以現在我需要使用這兩個數組並創建它:

{ Field1: "2011/04/23", Field2: 8, Field3: "Adam", Field4: "Den"},   

Field1,Field2,FieldN取決於所選列的列數。 (因為我有這些列的名稱,我只需要計算它)。

到目前為止我嘗試了什么(沒有成功):

var nFields   = Object.keys(dados[0]).length;//Number of columns
var nElements = dados.length; //Number of registers

var resultado = [];
for(i=1;  i<= nElements; i++){
   for(j=0; j < nFields; j++){
      var temp = [];
      temp.push({ ["Field"+ (j+1)]: dados[j][ columns[j]['sTitle'] ] });
      resultado = temp;
   }                
}

就像一個注釋 - 在javascript中它們不被稱為關聯數組,它們只是對象。

選項1:

您可以創建一個空對象,然后使用obj[key]添加obj[key]

var resultado = [];
for(i=0;  i< dados.length; i++){                
    resultado[i] = {};
    resultado[i]["Field"+i] = dados[columns[i]]
}

選項2:

您可以在使用之前創建密鑰的名稱:

var resultado = [];
for(i=0;  i< dados.length; i++){                
    key = "Field"+i
    resultado[i] = {key: dados[columns[i]]};
}

您可以使用括號為對象的屬性生成計算名稱。

Obs:我不會總是有4個字段,可能會有所不同。

如果dados數組是一個數組數組,則使用嵌套for循環來迭代當前dados[i]數組的每個元素。

 var dados = [ [0, 1, 2], [3, 4], [5, 6, 7, 8] ]; var resultado = []; var prop = "Field"; for (var i = 0; i < dados.length; i++) { resultado[i] = {}; for (var n = 1; n < dados[i].length; n++) { resultado[i][prop + n] = dados[i][n - 1]; } } console.log(resultado); 

如果未設置resultado[i] ,則可以使用默認對象,並使用括號表示法進行訪問。

resultado[i] = resultado[i] || {};
resultado[i]["Field" + i] = dados[columns[i]];

只需使用push方法。

var resultado = [];
for(var i=0;  i< dados.length; i++){                
    resultado.push({ "Field"+i : dados[columns[i]]});
} 

暫無
暫無

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

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