gpt4 book ai didi

javascript - (Javascript) 当属性不存在时,如何使用 csv 中的标题和空字符串将对象属性获取到 csv?

转载 作者:行者123 更新时间:2023-11-28 10:44:00 26 4
gpt4 key购买 nike

我有一个对象数组。其中一些对象具有共享属性,但并非每个对象都具有所有属性,并且各个对象的属性顺序可能不同。考虑以下因素:

var arr = [{ foo: 1, bar: 2}, { foo: 3, thing: 4}, {thing: 5, bar: 6}]

我需要将此数组转换为 CSV,以便第一行是包含所有属性名称的标题,如果该属性存在于对象中,则将填充该属性,否则为空字符串。顺序不一定重要,只要每行中每个项目的顺序与标题的顺序一致即可。

期望的输出:

foo,bar,thing
1,2,
3,,4
,6,5

最佳答案

function getCsvLines(input) {

var CSV_SEPARATOR = ',';

var headers = getHeaders(input);

var lines = getLines(input, headers);

return [headers.join(CSV_SEPARATOR)].concat(lines);

function getHeaders(input) {

var headers = new Set();

input.forEach(function (obj) {
Object.keys(obj).forEach(function (key) {
headers.add(key);
});
});

return Array.from(headers);
}

function getLines(input, headers) {

var lines = [];

input.forEach(function (obj) {
var line = [];
headers.forEach(function (head) {
line.push(obj[head] || '');
});
lines.push(line);
});

return lines.map(function(line) {
return line.join(CSV_SEPARATOR);
});
}
}

getCsvLines(arr); // -> ["foo,bar,thing", "1,2,", "3,,4", ",6,5"]

getCsvLines 函数返回用于导出的 csv 行数组。

要更改值的顺序,只需在将 headers 数组传递给 getLines 之前重新排序即可。

关于javascript - (Javascript) 当属性不存在时,如何使用 csv 中的标题和空字符串将对象属性获取到 csv?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46738727/

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