用于拆分数据和计算总和的 JavaScript

标签 javascript arrays string split

我相信我需要的是两个 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/

相关文章:

arrays - 如何打印 slice 的值

java - 如何聚合存储在java中的数组中的值

php - 如何将文本 append 到特定的 php 数组值

c - 从输入字符串中重复删除和替换子字符串的出现

javascript - 在特定模式之后匹配 ",",同时排除该模式。 (在 JavaScript 中回顾)

javascript - 在 P5.js 中改变物体高度的正弦函数

javascript - 如何在不使用 iframe 或库的情况下创建裁剪显示窗口区域?

javascript - 将数字数组按偶数和奇数排序时遇到问题

c - 从 C 中的字符串中删除最常见的单词

ios - iOS 中的文本文件到字符串