我相信我需要的是两个 JavaScript 函数。我收到一个逗号分隔的字符串,其中包含两种类型的数据:1) 设备名称后跟 2) 数值。这两个值用逗号隔开,每组也用逗号隔开。下面的示例字符串:
Device_A,5,Device_C,2,Device_A,10,Device_B,8,Device_B,2,Device_C,7
我想做的是创建两个独立的函数。第一个函数查找唯一的设备名称并仅返回逗号分隔字符串中的名称。第二个函数将计算每个设备的数值总和。上述示例字符串的预期结果将返回:
功能一(设备列表):
Device_A, Device_B, Device_C
函数 2(每个设备列表的总和):
15,10,9
列表不需要以任何特定顺序返回,只要它们匹配即可。在这一点上,我所成功完成的就是返回一个唯一值列表(包括数值)...我一直坚持分离列表,但仍然引用设备名称来总结所有值。
提前致谢。如果您有任何问题,请告诉我! 马特
最佳答案
您可以使用一个对象来收集名称和计数。
此编辑包含一个共享函数和两个用于结果的函数,顺序相同。
function getGrouped(data) {
var array = data.split(','),
temp = Object.create(null),
i = 0;
while (i < array.length) {
temp[array[i]] = (temp[array[i]] || 0) + +array[i + 1] || 0;
i += 2;
}
return temp;
}
function getDevices(data) {
var temp = getGrouped(data);
return Object.keys(temp).sort().join();
}
function getCounts(data) {
var temp = getGrouped(data);
return Object.keys(temp).sort().map(function (k) { return temp[k]; }).join();
}
var data = "Device_A,5,Device_C,2,Device_A,10,Device_B,8,Device_B,2,Device_C,7";
console.log(getDevices(data));
console.log(getCounts(data));
关于用于拆分数据和计算总和的 JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45630435/