gpt4 book ai didi

javascript - 将第一个属性转换为键

转载 作者:行者123 更新时间:2023-12-01 03:35:18 25 4
gpt4 key购买 nike

我正在使用以下函数来解析 csv 文件。

export default function readCsv (csv, reviver) {
reviver = reviver || function(r, c, v) {
return v;
};
let chars = csv.split(''),
c = 0,
cc = chars.length,
start, end, table = [],
row;
while (c < cc) {
table.push(row = []);
while (c < cc && '\r' !== chars[c] && '\n' !== chars[c]) {
start = end = c;
if ('"' === chars[c]) {
start = end = ++c;
while (c < cc) {
if ('"' === chars[c]) {
if ('"' !== chars[c + 1]) {
break;
} else {
chars[++c] = '';
} // unescape ""
}
end = ++c;
}
if ('"' === chars[c]) {
++c;
}
while (c < cc && '\r' !== chars[c] && '\n' !== chars[c] && ',' !== chars[c]) {
++c;
}
} else {
while (c < cc && '\r' !== chars[c] && '\n' !== chars[c] && ',' !== chars[c]) {
end = ++c;
}
}
row.push(reviver(table.length - 1, row.length, chars.slice(start, end).join('')));
if (',' === chars[c]) {
++c;
}
}
if ('\r' === chars[c]) {
++c;
}
if ('\n' === chars[c]) {
++c;
}
}
return table;
}

json 看起来像这样:

enter image description here

我想要的 json 如下所示:

[
doc_id: "16278",
framework_id: "8078",
...
],
[
doc_id: "16261",
framework_id: "880",
...
],

基本上,不应将第一行的内容作为 json 中的第一个值,而应将第一行转换为键,并将其余行转换为值。

最佳答案

对数据进行后处理以将其映射为所需的格式相对简单,即在变量 data 中给出 CSV 读取器的输出:

data = data.slice(1).map(function(row) {
return row.reduce(function(obj, value, index) {
var key = data[0][index]; // extract from first original row
obj[key] = value;
return obj;
}, {});
});

即迭代所有行(跳过第一行),根据第零行中的键和当前行中的值创建一个对象。

请注意,这将使用长形式的原始 key 。您可能希望首先更改第一行中的值以使它们更加规范化,例如:

data[0] = data[0].map(function(key) {
key = key.replace(/[^\w\d\s]/g, ''); // strip non-alphanum or space
return key.replace(/\s/g, '_').toLowerCase();
});

关于javascript - 将第一个属性转换为键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44314648/

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