AngularJS中如何将JSON数据推入dashArray数组?
如何正确构建目标数组dashArray?
首先明确你的需求:把headArray里的每个标题,和dashboardstatus中对应的hideDashboardN、closeDashboardN属性配对,生成包含多个对象的dashArray。
你之前的代码有几个明显的语法问题:
- 对象字面量里不能直接用变量作为键名,需要用**方括号[]**包裹变量来创建动态键
- 属性名拼接错误:
'closeDashboard'(i+1)这里少了连接符+,应该是'closeDashboard' + (i+1) - 内部对象结构写法错误,你把两个属性直接丢进去,没有遵循正确的键值对格式
修正后的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
相关产品推荐
相关产品推荐

