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

AngularJS读取含点式变量的数组:Sequelize返回JSON处理问题

如何在AngularJS中读取带点式变量名的数组数据

嘿,我来帮你搞定这个问题!你遇到的是JavaScript中属性名包含特殊字符(这里是点)时的访问问题,解决方法其实很直接。

首先看你拿到的JSON数据,里面的"manufacturer.name"、"manufacturer.description"这类带点的键,属于非标准标识符属性名,JavaScript的点语法(.)没法直接访问它们,得用方括号语法来读取。

1. 控制器中读取带点属性的正确方式

在你的循环里,想要获取这些带点的属性值,只需要把属性名用字符串形式放进方括号里就行,比如:

vm.spareParts = data.data;
console.log('-------- ' + JSON.stringify(vm.spareParts));

for (var i = 0; i < vm.spareParts.length; i++) {
  var currentPart = vm.spareParts[i];
  
  // 读取普通属性(点语法正常用)
  var partName = currentPart.name;
  var stock = currentPart.stock;
  
  // 读取带点的属性(必须用方括号)
  var manufacturerName = currentPart["manufacturer.name"];
  var manufacturerDesc = currentPart["manufacturer.description"];
  var manufacturerCode = currentPart["manufacturer.codManufacturer"];
  
  // 可选:把分散的manufacturer属性整理成嵌套对象,方便后续使用
  currentPart.manufacturer = {
    name: manufacturerName,
    description: manufacturerDesc,
    codManufacturer: manufacturerCode
  };
  
  // 之后就可以用点语法访问了:currentPart.manufacturer.name
}

2. 视图模板中访问的注意事项

如果要在AngularJS的模板里展示这些数据,同样遵循这个规则:

  • 直接访问带点属性:{{ part['manufacturer.name'] }}
  • 如果已经在控制器里整理成嵌套对象,就可以用更简洁的点语法:{{ part.manufacturer.name }}

为什么点语法不行?

JavaScript规定,点语法只能用于有效的标识符属性名——属性名不能包含空格、点、特殊符号,也不能是JavaScript关键字。而带点的属性名不符合这个要求,所以必须用方括号语法,方括号里可以接受任意字符串作为属性名。

内容的提问来源于stack exchange,提问作者Miguel-Ángel

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 07:46:06