gpt4 book ai didi

javascript - 是否有将非结构化数据转换为 csv 的 npm 包?

转载 作者:行者123 更新时间:2023-11-29 22:59:59 25 4
gpt4 key购买 nike

尝试将一些数据导出到 Javascript 中的 csv。试图找到一个 npm 模块来执行此操作......但是 - 我拥有的数据每行可能有不同的标题......

例如我的数据可能是这样的:

[ { name: 'John', color: 'Blue', age: 25 }, { name: 'Ursula', color: 'Red', food: 'pasta'},...]

理想情况下,csv 将导出为:

name, color, age, food
John, Blue, 25,
Ursula, Red,,pasta

我研究过 fast-csv,它似乎不接受动态 header (上述需求)...(在上面的示例中,fast-csv 将仅由第一个条目提供静态 header (仅 namecolorage))

最佳答案

下面是一些代码,它们将根据对象中具有不同键名的相似数据结构生成该输出。

const data = [{ name: 'John', color: 'Blue', age: 25 }, { name: 'Ursula', color: 'Red', food: 'pasta'}, { size: 12, feet: 'small', name: 'Bob'}];

function getHeadings(data) {

// `reduces` over the array combining all the
// different object keys into one array
// removing the duplicates by converting it to a
// Set, and then converting it back to an array again
return [...new Set(data.reduce((acc, c) => {
const keys = Object.keys(c);
return acc.concat(keys);
}, []))];
}

const headings = getHeadings(data);

// Iterate over the data...
const out = data.reduce((acc, c) => {

// ...grab the keys in each object
const keys = Object.keys(c);

// ...create a new array filled with commas
const arr = Array(headings.length).fill(',');

// For each key...
keys.forEach(key => {

// ...find its index in the headings array
const index = headings.findIndex(el => el === key);

// ...and replace the comma in the array with the key
arr[index] = `${c[key]},`;
});

// Add the array to the output
return acc.concat(arr.join(''));
}, []).join('\n');

console.log(`${headings}\n${out}`);

关于javascript - 是否有将非结构化数据转换为 csv 的 npm 包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55884918/

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