当前位置: 首页 > 知识库问答 >
问题:

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

景昊焜
2023-03-14

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

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

我想在数据表上使用此数据,但我想根据字段标题(组)向表中的每一行添加文本输入。因此,我想将此列添加到每个数组,类似于:

[{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"});
}

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


共有3个答案

云浩然
2023-03-14

{field d1:“某物”,field d2:“其他”}不是数组,它是一个对象。数组由[]包围,对象位于{}中,元素key: value

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

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

for (var i = 0; i < array.length; i++) {
    array[i].Group = "text Input";
}
东方俊力
2023-03-14

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

var fields = [{
  field1: "Something",
  field2: "Other"
}, {
  field1: "Something",
  field2: "Other"
}, {
  field1: "Something",
  field2: "Other"
}]

fields.forEach(x =>
  x.Group = "Text Input"
)
console.log(fields)
荀俊迈
2023-03-14

数组中的条目不是数组,而是对象。(数组也是对象,但这些条目不是数组。)要将属性添加到对象,简单的方法是为其指定:

arrayItem.Group = "text input";

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

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

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

在ES2015中,您可以使用来执行以下循环:

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

...它具有相同的优点(入口仅在循环内定义)。

 类似资料:
  • 问题内容: 我有以下mongodb文件结构: 我已经能够使用$ elemMatch来更新操作中的字段,但是当我尝试对参数执行相同的操作(修改)时,它似乎不起作用。我想知道我应该尝试哪种其他方法,以便能够成功更新特定参数中的字段(通过其pid查找)。 我当前拥有但不起作用的更新代码如下所示: 问题答案: MongoDB 3.6及更高版本 MongoDB3.6及更高版本提供了一项新功能,该功能允许您使

  • 我正在努力实现以下转变。然而,我的解决方案在最终数组中添加了不需要的空值。 转换需要为所有元素在array中移位名称。我创建了3个案例来说明这个问题。 编辑:< code >根数组将始终至少有1个元素。 当前的JOLT规范工作正常,除了是空数组的情况。它生成值,我试图指定一个空字符串(或任何硬编码的字符串值,如)

  • 问题内容: 我正在使用有角JS及其示例之一:http : //jsfiddle.net/furf/EJGHX/ 在发送更新功能之前,我需要获取数据并向其中添加一些值。(如果用angular而不是js更好,请告诉我) 我正在尝试获取“父代”和“索引”并更新子代。 这是我正在遍历的数据 这就是我目前正在遍历的方式,但是它只能得到第一个维度 我在另一个小提琴上找到了这个,但我不知道该如何抓取父对象或索引

  • 我正处于复杂的聚合查询(具有查找和许多组/展开阶段)的中间,并且遇到来自不同字段的两个不同数组的合并问题。 至于现在,在其中一个阶段之后(在我的大查询的中间或查找之后),我有以下输出: 我想: 因此,每个值,我想根据它的索引添加到内的每个对象,比如第一个内的应该有第一个来自 具有数组索引的架构): 问题是: 我无法在聚合之后或之前执行此操作,因为: > 我没有必要的数据,因为它是从不同集合中查找的

  • 问题内容: 我想出了一些可行的方法,但并非完全符合我的期望。这是我的解决方案: attribute_category_map是一个具有两列的表,我在其中查找第1列中的对应值,并用第2列中的值替换目标表中的数据。我实现的最佳结果- 用相同的值更新了一行中的所有嵌套字段,这仅适用于第一个嵌套字段,而不是使用特定值更新每个嵌套字段。 主表的简化架构: 会话行中通常有多个匹配项,一个匹配项中通常包含多个产