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