javascript - 将 javascript 对象合并为 csv 格式

标签 javascript arrays csv object

我试图通过组合四个不同的数据集(data1、data2、data3、data4)来获得如下所示的输出(预期输出), 其中所有要组合的名称和要添加的值。

var 
data1 = [{name:"js",value:"20"}],
data2=[{name:"c#",value:10}],
data3=[{name:"ds",value:30}],
data4 = [{name:"java",value:10},{name:"c",value:40}]

预期输出

output = "js-c#-ds-java,70\n\
js-c#-ds-c,100\n"

最佳答案

如果你想要如此奇怪的输入,那么像这样:

var 
data1 = [{name:"js",value:"20"}],
data2=[{name:"c#",value:10}],
data3=[{name:"ds",value:30}],
data4 = [{name:"java",value:10},{name:"c",value:40}]

var item, nameStack = [], sums={}, output = "";
var i=1;
while(item = window["data" + i++]) {
    var dashName = nameStack.join('-'), val;
    if (dashName) {
        val = sums[dashName];
    } else val = 0;
    for(var j in item) {
        var dashName2;
        nameStack.push(item[j].name);
        dashName2 = nameStack.join('-');
        sums[dashName2] = val + parseInt(item[j].value);
        if(item.length > 1) nameStack.pop();
    }
    delete sums[dashName];
}
console.log(JSON.stringify(sums))
for(item in sums) {
   output += item + "," + sums[item] + "\n"
}
console.log(output)

或者如果您有像这样更简单的数组输入:

var 
data = [[{name:"js",value:"20"}],
[{name:"c#",value:10}],
[{name:"ds",value:30}],
[{name:"java",value:10},{name:"c",value:40}]];

var item, nameStack = [], sums={}, output = "";
var i=1;
for(item in data) {
    item = data[item];
    var dashName = nameStack.join('-'), val;
    if (dashName) {
        val = sums[dashName];
    } else val = 0;
    for(var j in item) {
        var dashName2;
        nameStack.push(item[j].name);
        dashName2 = nameStack.join('-');
        sums[dashName2] = val + parseInt(item[j].value);
        if(item.length > 1) nameStack.pop();
    }
    delete sums[dashName];
}
console.log(JSON.stringify(sums))
for(item in sums) {
   output += item + "," + sums[item] + "\n"
}
console.log(output)

介意投票下方的接受按钮,以防万一。

关于javascript - 将 javascript 对象合并为 csv 格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57675036/

相关文章:

C++读取csv文件

javascript - 如何使用单独的声明文件从外部模块声明 React.Component 类型?

javascript - PHP 返回添加空格,即使使用trim()

javascript - 如何使用纯 Javascript 根据值对选择选项进行排序?

javascript - 根据javascript中的匹配条件从数组数组中查找匹配项

node.js - Fast-CSV 异步流转换

javascript - json 到 D3js 对嵌套数组中的数据进行分组

javascript - 查找匹配的数组对象属性

c - char 和整数数组之间的速度差异?

c# - 让 FileHelpers 2.0 处理带有多余逗号的 CSV 文件