最初,我使用的是CSV,每行包含数据,例如
------------------------------------------------------
123 | cat | dog |
------------------------------------------------------
456 | cat | rabbit |
------------------------------------------------------
789 | snake | dog |
------------------------------------------------------
我现在正在获取更多具有不同结构的数据,因此我无法再使用csv。相反,我正在使用JSON文件。 JSON文件看起来像这样
[
[
{
"ID": 123,
"animal_one": "cat",
"animal_two": "dog"
},
{
"ID": 456,
"animal_one": "cat",
"animal_two": "rabbit"
},
{
"ID": 789,
"animal_one": "snake",
"animal_two": "dog"
}
],
[
2222
],
[
12345
],
[
"2012-01-02"
],
[
"2012-12-20"
]
]
因此您可以看到其他数据。对于应用程序的这一部分,我只想处理JSON的第一部分,即包含动物的部分。我拥有的函数基本上只对值起作用,因此我需要使JSON像原始CSV文件一样,使我仅具有值,而没有键。
因此,我正在加载JSON文件,该文件随后包含在变量data
然后我要尝试这样的事情
var key = "CUST_ID";
delete data[0][key];
console.log(JSON.stringify(data[0]))
尽管这甚至行不通,但我认为这仍然是错误的方法。我不想定义要删除的键,只希望它删除所有键并保留值。
我将如何去做?我正在使用data[0]
获取JSON的第一部分,该部分包含动物。不确定这是否正确?
谢谢
答案 0 :(得分:3)
我不想定义要删除的键
您仍然将需要定义哪个键作为值。一个可能只是把所有的值从对象,以任意顺序,但是这不是对变化数据格式强劲。使用类似
const table = data[0].map(value => [value.ID, value.animal_one, value.animal_two]);
答案 1 :(得分:2)
如果您不在乎所获得的密钥,则可以简单地执行此操作:
var collection = "";
data[0].forEach(function(row) {
var line = [];
Object.keys(row).forEach(function(key) {
line.push(row[key])
});
collection = collection + line.join(',') + '\n';
})
您将从集合中删除csv字符串
答案 2 :(得分:1)
data[0].forEach(function(row,index) {
data[0][index] = Object.values(data[0][index]);
});