【发布时间】:2014-08-14 04:15:14
【问题描述】:
我正在使用 node.js、mssql(不要问..客户端)、socket.io 和 angularjs 构建一个应用程序。
我已经设法以下列形式从 mssql 获取数据到 angular。
[
{
"measure":"value",
"region":"London",
"manager":"Jack",
"supervisor":"James",
"number1":44,
"number2":2244.3,
"number3":1561.6
},
{
"measure":"value",
"region":"London",
"manager":"Jack",
"supervisor":"Jerry",
"number1":335.4,
"number2":33.3,
"number3":11.6
},
{
"measure":"value",
"region":"London",
"manager":"John",
"supervisor":"Joseph",
"number1":444.3,
"number2":233,
"number3":1561.6
}
]
我正在尝试通过 angular.forEach 来操作数据以达到以下结果:
[
{
"region": "London",
"regionTotals" : {
"turnover" : {
"number1" : "TOTAL OF NUMBER 1 WITH REGION LONDON",
"number2" : "TOTAL OF NUMBER 2 WITH REGION LONDON",
"number3" : "TOTAL OF NUMBER 3 WITH REGION LONDON"
}
},
"managers" : {
"jack" : {
"managerTotals" {
"number1": "TOTAL OF NUMBER 1 WITH MANAGER JACK",
"number2": "TOTAL OF NUMBER 2 WITH MANAGER JACK",
"number3": "TOTAL OF NUMBER 3 WITH MANAGER JACK"
},
"supervisors" : {
"Jerry": {
"supervisorTotals" : {
"number1":335.4,
"number2":33.3,
"number3":11.6
}
},
"James": {
"supervisorTotals" : {
"number1":44,
"number2":2244.3,
"number3":1561.6
}
}
}
},
"john" : {
"managerTotals" {
"number1": "TOTAL OF NUMBER 1 WITH MANAGER JOHN",
"number2": "TOTAL OF NUMBER 2 WITH MANAGER JOHN",
"number3": "TOTAL OF NUMBER 3 WITH MANAGER JOHN"
},
"supervisors" : {
"Joseph": {
"supervisorTotals" : {
"number1":444.3,
"number2":233,
"number3":1561.6
}
}
}
}
}
}
]
这是最好的方法吗?如果您对如何通过 javascript 循环运行它有任何建议,我将不胜感激,因为我正在苦苦挣扎。尤其是尝试设置对象键。
我能想到的唯一其他方法是在节点中运行一堆查询并将它们放在服务器端而不是客户端。但是考虑到我使用的是 mssql,我想将查询保持在最低限度。
谢谢
【问题讨论】:
-
所以你的问题是关于数据转换的,对吗?我会使用 array.prototype.reduce 之类的东西将我的数组转换为对象,您可以在此处了解更多信息developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
-
鉴于您没有发布任何代码或任何“最佳”标准(例如快速、易于维护、广泛兼容等),因此无法判断它是否是“最佳方式”。 forEach 可能是一个合理的选择,但可能是也可能不是“最佳”。
-
感谢您的 cmets。 @DayanMorenoLeon 是的,数据转换是问题的基础,我将研究 reduce 方法。
-
@RobG 首先易于编程,其次是应用程序速度将是主要标准,因为这是我必须对不同视图进行类似操作的许多数据集之一,我认为专注于一个可能会导致相反的解决方案!
-
如果您完全了解 reduce、map、filter 的工作原理,那么使用它们会很棒。但是很多人都在挣扎,所以选择变量名的简单循环可能最便于理解和维护。而且它们可能会比嵌套迭代器更快,有时更快,因为它们的函数调用要少得多。
标签: javascript arrays node.js angularjs dynamic-arrays