gpt4 book ai didi

javascript - JS : convert 2D object with keys to transposed csv

转载 作者:行者123 更新时间:2023-11-28 19:08:41 27 4
gpt4 key购买 nike

我有一个返回 2D 对象的 ajax 调用,我希望能够将其转换为 .csv 文件以供用户下载。

PHP代码:echo json_encode($results);

js 函数现在有 console.log (JSON.parse(res)); 所以我可以验证内容。

控制台日志显示:

Object {color: Object, animal: Object}
color: Object
1: "red"
2: "white"
3: "blue"
animal: Object
1: "cat"
2: "dog"
3: "mouse

每个内部对象始终具有相同数量的元素(在本例中为 3)

我想将其转换为 csv,然后下载。 csv 的第一行将包含外部对象键(颜色、动物),csv 最终将如下所示:

"color, animal"
"red, cat"
"white, dog"
"blue, mouse"

通过我看过的解决方案,他们将对象的连接版本附加到每一行。我需要垂直转置数据。

我认为我需要遍历每个内部对象(获取每个对象的第 n 个元素,获取每个对象的第 n+1 个元素等)并构建我自己的 csv 字符串,但这看起来非常笨重。

有什么漂亮的数组/对象函数可以帮助我吗?

我能够创建并下载 .csv 文件,只是这个数据转置逻辑让我陷入困境。

编辑:我没有尝试将 csv 字符串转换为数组,也没有尝试转置 2D 数组(它是一个 2D 对象)。

澄清 在对 php 文件的 ajax 调用中,我发送了一个从用户输入派生的 ["color", "animal"] 数组。 php 文件读取该数组并根据该数组收集数据。收集数据后,它会返回一个二维数组,内部数组是新数据。因此:

[color[red, white, blue], animal[cat,dog,mouse]]

最佳答案

你可以尝试这样的事情:

var rep = JSON.parse('{"color":{"1":"red","2":"white","3":"blue"},"animal":{"1":"cat","2":"dog","3":"mouse"}}')
function toCSV(jsonObject) {
var csv = [];
for (var i in jsonObject) {
if (jsonObject.hasOwnProperty(i)) {
var title = i.indexOf(' ')>-1? '"'+i+'"': i;
csv[0] ? csv[0].push(title) : csv[0] = [title];
var k = Object.keys(jsonObject[i]);
for (var j = 0; j < k.length; j++) {
var val = jsonObject[i][k[j]].indexOf(' ')>-1? '"'+jsonObject[i][k[j]]+'"': jsonObject[i][k[j]];;
csv[j+1] ? csv[j + 1].push(val) : csv[j+1] = [val];
}
}
}
return csv.join('\n');
}

document.body.innerHTML = toCSV(rep).replace(/\n/g, '<br>');

关于javascript - JS : convert 2D object with keys to transposed csv,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31151525/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com