[英]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中它们不被称为关联数组,它们只是对象。
您可以创建一个空对象,然后使用obj[key]
添加obj[key]
:
var resultado = [];
for(i=0; i< dados.length; i++){
resultado[i] = {};
resultado[i]["Field"+i] = dados[columns[i]]
}
您可以在使用之前创建密钥的名称:
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.