【发布时间】:2018-07-12 06:16:16
【问题描述】:
这是我第一次使用 javascript。我有以下字符串:
document.write(str)
[{"company":1,"number_employees":5},
{"company":4,"number_employees":25},
{"company":5,"number_employees":5},
{"company":2,"number_employees":5},
{"company":4,"number_employees":25}]
我需要转换这个字符串,以便我根据 number_employees 将它们汇总如下:
Three companies have number_employees=5 and two companies have number_employees=25
我目前正在努力将字符串转换为 javascript 对象。有了关联数组后,我可以将其转换为 map 并计算 number_employees。
s_obj = eval('({' + messageBody + '})');
var result = s_obj.reduce(function(map, obj) {
map[obj.key] = obj.val;
return map;
}, {});
这给了我以下错误:
VM181:1 Uncaught SyntaxError: Unexpected token ,
at onMessage ((index):41)
at WebSocket.<anonymous> (stomp.min.js:8)
任何帮助/提示/指导将不胜感激!
【问题讨论】:
-
首先,使用
JSON.parse,而不是eval -
var s_obj = JSON.parse(messageBody); -
那不是字符串。它也不是有效的 JavaScript。除了
document.write(str)和缺少引号外,它看起来像 JSON。 (在这种情况下,你会做JSON.parse('[{"company":1,...}]))
标签: javascript object hashmap associative-array summarize