迭代数组并为每个嵌套数组添加新字段

时间:2017-08-17 16:43:14

标签: javascript jquery datatables

我有一个来自AJAX调用的JSON数组,如下所示:

[{field1: "Something", field2: "Other"},{field1: "Something", field2: "Other"},{field1: "Something", field2: "Other"}]

我想在DataTables上使用这些数据,但我想根据字段Title(Group)向表中的每一行添加一个文本输入。因此,我想将此列添加到每个数组中,例如:

[{field1: "Something", field2: "Other", Group: "Text Input"},{field1: "Something", field2: "Other", Group: "Text Input"},{field1: "Something", field2: "Other", Group: "Text Input"}]

因此DataTables将在每个新行上添加文本输入。如何使用jQuery或javascript实现这一目标?

我试过迭代通过数组:

var i, j, arrayItem;
for (i = 0; i < array.length; ++i) {
    arrayItem = array[i];
    arrayItem.push({Group: "Text Input"});
}

但这显示错误"Push" is not a function。如您所见,JSON数组没有针对每个嵌套数组的显式索引,并且每个数组都不是唯一的。

3 个答案:

答案 0 :(得分:2)

数组中的条目不是数组,它们是&#em>对象。 (数组也是对象,但那些条目不是数组。)要向对象添加属性,只需分配给它:

arrayItem.Group = "text input";

你可以像你一样使用for循环,这绝对没问题,或者从ES5及以上版本开始(或者对于过时的环境使用polyfill)你可以使用forEach:< / p>

array.forEach(function(entry) {
    entry.Group = "text input";
});

这样做的好处是您不需要那些iarrayItem变量。

在ES2015 +中,您可以使用for-of循环:

for (const entry of array) {
    entry.Group = "text input";
}

...具有相同的优势(entry仅在循环内定义。)

答案 1 :(得分:1)

你不能推,因为它是一个对象。只需分配给对象。

&#13;
&#13;
localhost:5000/assets/test.css
&#13;
&#13;
&#13;

答案 2 :(得分:1)

{field1: "Something", field2: "Other"}不是数组,而是一个对象。数组包含[],对象位于{},元素为key: value

您不使用push()添加到对象,只需指定属性即可。

array.forEach(e => e.Group = "text Input");

for (var i = 0; i < array.length; i++) {
    array[i].Group = "text Input";
}