Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 迭代数组并向每个嵌套数组添加新字段_Javascript_Jquery_Datatables - Fatal编程技术网

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

Javascript 迭代数组并向每个嵌套数组添加新字段,javascript,jquery,datatables,Javascript,Jquery,Datatables,我有一个来自AJAX调用的JSON数组,如下所示: [{field1: "Something", field2: "Other"},{field1: "Something", field2: "Other"},{field1: "Something", field2: "Other"}] 我想在DataTables上使用这些数据,但我想根据字段标题(组)向表中的每一行添加文本输入。因此,我想将此列添加到每个数组中,类似于: [{field1: "Something", field2: "Oth

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

[{field1: "Something", field2: "Other"},{field1: "Something", field2: "Other"},{field1: "Something", field2: "Other"}]
我想在DataTables上使用这些数据,但我想根据字段标题(组)向表中的每一行添加文本输入。因此,我想将此列添加到每个数组中,类似于:

[{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"});
}
vari,j,arrayItem;
对于(i=0;i

但这显示错误,
“推送”不是一个函数。如您所见,JSON数组没有针对每个嵌套数组的显式索引,并且每个数组都不是唯一的。

数组中的条目不是数组,而是对象。(数组也是对象,但这些条目不是数组。)要向对象添加属性,简单的方法就是为其赋值:

arrayItem.Group = "text input";
您可以使用
for
循环,就像您所做的那样,这是绝对正确的,或者从ES5及以上版本开始(或者对于过时的环境使用polyfill),您可以使用
forEach

array.forEach(function(entry) {
    entry.Group = "text input";
});
这样做的好处是,您不需要那些
i
arrayItem
变量

在ES2015+中,您可以使用
进行以下循环:

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

…具有相同的优点(
条目
仅在循环内部定义)。

数组中的条目不是数组,而是对象。(数组也是对象,但这些条目不是数组。)要向对象添加属性,简单的方法就是为其赋值:

arrayItem.Group = "text input";
您可以使用
for
循环,就像您所做的那样,这是绝对正确的,或者从ES5及以上版本开始(或者对于过时的环境使用polyfill),您可以使用
forEach

array.forEach(function(entry) {
    entry.Group = "text input";
});
这样做的好处是,您不需要那些
i
arrayItem
变量

在ES2015+中,您可以使用
进行以下循环:

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

…具有相同的优点(
条目
仅在循环内部定义)。

您不能推送,因为它是一个对象。只需指定给对象

var字段=[{
字段1:“某物”,
字段2:“其他”
}, {
字段1:“某物”,
字段2:“其他”
}, {
字段1:“某物”,
字段2:“其他”
}]
fields.forEach(x=>
x、 Group=“文本输入”
)

console.log(字段)
您不能推送,因为它是一个对象。只需指定给对象

var字段=[{
字段1:“某物”,
字段2:“其他”
}, {
字段1:“某物”,
字段2:“其他”
}, {
字段1:“某物”,
字段2:“其他”
}]
fields.forEach(x=>
x、 Group=“文本输入”
)
console.log(fields)
{field1:“Something”,field2:“Other”}
不是数组,而是对象。数组被
[]
包围,对象在
{}
中,元素是
键:值

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

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

for(变量i=0;i
{field1:“某物”,field2:“其他”}
不是数组,而是对象。数组被
[]
包围,对象在
{}
中,元素是
键:值

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

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

for(变量i=0;i
我明白了,我如何区分何时引用嵌套对象而不是嵌套数组?。我已经为此挣扎了一段时间了哈哈。
[…]
表示数组
{…}
表示非数组对象。我将把这个问题留在这里,因为它可能会在将来帮助其他人:谢谢你的回答,我很容易理解我的错误。我明白了,我如何区分何时引用嵌套对象而不是嵌套数组?。我已经为此挣扎了一段时间了哈哈。
[…]
表示数组
{…}
表示非数组对象。我将把这个问题留在这里,因为它可能会在将来帮助其他人:谢谢你的回答,我很容易理解我的错误。