You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript对象动态分配带索引键的实现问题(Angular代码失效)

问题排查与解决方案

你的代码主要有两个核心问题导致无法生成预期的对象结构:

1. 循环中重复覆盖data对象

每次循环你都直接用data = {...}给data赋值全新对象,这会导致前一次循环添加的属性被完全覆盖,最终data只会保留最后一次循环的结果。

2. 动态对象键名的语法错误

在对象字面量里,你试图用item_id[key]生成带后缀的键名,但这是无效语法。要创建动态键名,必须用方括号包裹表达式来定义键名。

修正后的代码

var data = {};
angular.forEach(vm.fields, function(value, key){
  // 动态生成键名,并将属性添加到已有的data对象上
  data[`item_id${key}`] = vm.selectedItem[key].id;
  data[`quantity${key}`] = vm.quantity[key];
});
console.log(data);

代码解释

  • 不再每次循环替换整个data对象,而是直接给已有data添加新属性,确保所有循环的键值对都被保留。
  • 使用[item_id${key}](ES6模板字符串)动态生成item_id0、quantity1这类带后缀的键名,保证每个键名唯一且符合预期格式。

兼容ES5的写法(如果项目不支持ES6)

var data = {};
angular.forEach(vm.fields, function(value, key){
  data['item_id' + key] = vm.selectedItem[key].id;
  data['quantity' + key] = vm.quantity[key];
});
console.log(data);

内容的提问来源于stack exchange,提问作者Emjey23

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:55:04