我有一个来自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数组没有针对每个嵌套数组的显式索引,并且每个数组都不是唯一的。
答案 0 :(得分:2)
数组中的条目不是数组,它们是&#em>对象。 (数组也是对象,但那些条目不是数组。)要向对象添加属性,只需分配给它:
arrayItem.Group = "text input";
你可以像你一样使用for
循环,这绝对没问题,或者从ES5及以上版本开始(或者对于过时的环境使用polyfill)你可以使用forEach
:< / p>
array.forEach(function(entry) {
entry.Group = "text input";
});
这样做的好处是您不需要那些i
和arrayItem
变量。
在ES2015 +中,您可以使用for-of
循环:
for (const entry of array) {
entry.Group = "text input";
}
...具有相同的优势(entry
仅在循环内定义。)
答案 1 :(得分:1)
你不能推,因为它是一个对象。只需分配给对象。
localhost:5000/assets/test.css
&#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";
}