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

AngularJS中如何将JSON数据推入dashArray数组?

如何正确构建目标数组dashArray?

首先明确你的需求:把headArray里的每个标题,和dashboardstatus中对应的hideDashboardN、closeDashboardN属性配对,生成包含多个对象的dashArray。

你之前的代码有几个明显的语法问题:

  1. 对象字面量里不能直接用变量作为键名,需要用**方括号[]**包裹变量来创建动态键
  2. 属性名拼接错误:'closeDashboard'(i+1)这里少了连接符+,应该是'closeDashboard' + (i+1)
  3. 内部对象结构写法错误,你把两个属性直接丢进去,没有遵循正确的键值对格式

修正后的for循环写法

$scope.dashArray = [];
// 注意原数组是headArray,别写错变量名!
for (var i = 0; i < $scope.headArray.length; i++) {
  const index = i + 1;
  // 先组装当前标题对应的配置对象
  const config = {
    hideDashboard: $scope.dashboardstatus['hideDashboard' + index],
    closeDashboard: $scope.dashboardstatus['closeDashboard' + index]
  };
  // 用方括号包裹标题,创建带动态键的对象
  const item = {
    [$scope.headArray[i]]: config
  };
  $scope.dashArray.push(item);
}

更简洁的forEach写法

如果觉得for循环繁琐,也可以用数组的forEach方法,代码可读性更强:

$scope.dashArray = [];
$scope.headArray.forEach((title, index) => {
  const num = index + 1;
  $scope.dashArray.push({
    [title]: {
      hideDashboard: $scope.dashboardstatus[`hideDashboard${num}`],
      closeDashboard: $scope.dashboardstatus[`closeDashboard${num}`]
    }
  });
});

最终生成的数组结构

运行上述代码后,$scope.dashArray会生成你想要的结构:

[
  {"Online & Open Alarms": {"hideDashboard": true, "closeDashboard": false}},
  {"Sites Overview": {"hideDashboard": true, "closeDashboard": true}},
  {"Active Alarms": {"hideDashboard": false, "closeDashboard": false}},
  {"Hidden Alarms": {"hideDashboard": false, "closeDashboard": false}}
]

另外提一句:你原需求里的Actives Alarms应该是笔误,原数组里是Active Alarms,代码会自动沿用原数组的正确值~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 10:04:01