将键值对附加到特定索引处的数组

时间:2017-10-10 00:40:54

标签: javascript jquery arrays

我使用以下内容填充了serializeArray()个数据:

var compArr = $(':input[name="cc_text"]').serializeArray();

console.log(compArr)看起来像这样:

0:{name: "cc_text", value: "spring 2016;"}
1:{name: "cc_text", value: "fall 2016;"}

我需要分别在每个索引中添加一个新条目,例如code: "B007"code: "J007",以便新数组看起来像:

0:{name: "cc_text", value: "spring 2016;", code: "B007"}
1:{name: "cc_text", value: "fall 2016;", code: "J007"}

目前,我的for循环看起来像这样:

for(var j = 0; j < countVar; j++)
{
  compArr.push({code: $('#label_text_'+j).text()})
}

我得到的结果如下:

0:{name: "cc_text", value: "spring 2016;"}
1:{name: "cc_text", value: "fall 2016;"}
2:{code: "B007"}
2:{code: "J007"}

当我尝试在循环内做这样的事情时:

compArr[j].push({code: $('#label_text_'+j).text()})

我收到错误compArr[j].push没有推送功能。

有没有办法实现这一点而无需重新创建新数组并重新插入所有数据,可能只需修改我填充初始serializeArray()

的方式

2 个答案:

答案 0 :(得分:1)

您正在尝试添加到对象,而不是推送到数组。试试这个:

compArr[j].code = $('#label_text_'+j).text();

答案 1 :(得分:1)

您的compArr包含对象。看起来您想要添加一个代码&#39;每个对象的属性。为此,循环执行compArr并将适当的代码添加到每个对象。

DType

上面的示例假设您有包含代码值的#label_text_0和#label_text_1元素。