簡體   English   中英

Javascript-將字符串轉換為關聯數組並按值匯總

[英]Javascript - convert string to associative array and summarize by value

這是我第一次使用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對象將JSON字符串轉換為對象,然后嘗試使用Array.prototype.reduce進行匯總-(將參數取反)

 var summary = {}; var messageBody = '[{"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}]'; JSON.parse(messageBody).reduce( (acc, cur) => { acc[cur.number_employees] = (acc[cur.number_employees] || 0) + 1; return acc; }, summary); for(entry of Object.keys(summary)) { if (summary.hasOwnProperty(entry)) { console.log(`There are ${summary[entry]} companies with ${entry} employees`); } } 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM