javascript - 可以 .push() 到动态命名的键吗?

标签 javascript arrays loops dynamic foreach

我有一个对象,我想使用循环将不确定数量的其他对象推送到该对象。为了保持它的组织性,我想根据循环运行的次数来动态命名键。我有以下内容:

let formsJson = {};
let counter = 1;

//savedForms are where the objects that I want to push reside
savedForms.forEach( form => {
  formsJson['form'+counter] = JSON.parse(form.firstDataBit_json);

  //This is where I'm having trouble

  counter = counter + 1;
});

我可以很好地推送第一位数据,并动态命名 key 。但我需要将另外 2 个对象推送到同一个动态键,这就是我遇到麻烦的地方。如果我尝试显而易见的事情并执行以下操作:

formsJson['form'+counter].push(JSON.parse(form.secondDataBit_JSON));

我没有得到任何输出。有办法实现吗?

最佳答案

forEach() 已经可以让您访问索引了。无需创建 counter 变量。 Example usage 。我绝对建议使用简单的索引,而不是使用 'form'+counter 键。

在您的示例中,我不清楚 forEach 循环中分配的值是一个数组。因此,尚不清楚您是否可以push到其中的任何给定元素。但通常该语法应该

就我个人而言,我更喜欢有一个输出元素的整个值的函数。这将提供更好的封装性、可测试性,并有助于强制执行默认值。像这样的东西:

function createItem(param1) { 
  let item = [];
  item.push(param1.someElement);
  if (foo) {
    item.push(...);
  } else {
    item.push(...);
  }
  return item;
}

formsJson['form'+counter] = createItem( JSON.parse(form) )

关于javascript - 可以 .push() 到动态命名的键吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52859806/

相关文章:

java - 无法找出循环。希望得到帮助

javascript - 创建一个具有可变属性高度的半圆形饼图

javascript - 添加 schema.org 视频标记以使用 Javascript 嵌入

javascript - Multiscroll.js 的导航问题

创建在另一个头文件中定义的结构数组

php - 使用 php 和 smarty 以水平方式显示数组数据

javascript - 在精确位置数组中搜索

javascript - Replace() 方法不替换

arrays - 使用Delphi从VarArray获取数据

javascript - 代码建议 - 如何使代码更简洁 (Javascript/Jquery)