我有一个有序数组,如下所示: -
[-0.0020057306590257895, 50, 0.09598853868194843, 50, 0.19398280802292264, 49.99999999999999, 0.2919770773638969, 50]
我想做的是以下内容:
因此...
上述CSV文件应返回以下对象: -
{
0: 50,
1: 50,
2: 49.99999999999999,
3: 50
}
有没有人知道如何使用jQuery或普通javascript解析此CSV以生成所需的数组?
答案 0 :(得分:4)
我将假设您已经完成了将CSV文件读入字符串的操作,因为您在使用.split(",")
尝试的评论中说过。
var csv = "-0.0020057306590257895, 50, 0.09598853868194843, 50, 0.19398280802292264, 49.99999999999999, 0.2919770773638969, 50";
var arr = csv.split(",");
var obj = {};
for (var i = 0; i < arr.length - 1; i += 2) {
obj[Math.round(arr[i] * 10)] = arr[i + 1];
}
你应该首先检查数组中是否有偶数个元素,例如if (arr.length % 2 == 0)
。
你应该带走的东西是:
{}
花括号用于定义对象,一对空括号与new Object()
的含义相同,但建议使用括号。[]
方括号可用于定义数组或通过索引(如arr[0]
)和对象的属性(如obj['name']
)来处理数组的元素。 })。答案 1 :(得分:1)
var arr = "-0.0020057306590257895, 50, 0.09598853868194843, 50, 0.19398280802292264, 49.99999999999999, 0.2919770773638969, 50".split(",");
var obj = {};
for (index = 0; index < arr.length - 1; index += 2) {
var key = Math.round(parseFloat(arr[index]) * 10);
var value = Math.round(parseFloat(arr[index + 1]) * 10);
obj[key.toString()] = value.toString();
}
获取值:
var keyVal = obj[key];
删除键值对:
delete obj[key];
希望这有帮助。
答案 2 :(得分:1)
如果您的数据结构保证每个整数都有一个值(即在偶数列中不会从3.9直接跳到5.9),您可以节省一些精力并使用
var arr = "-0.0020057306590257895, 50, 0.09598853868194843, 50, 0.19398280802292264, 49.99999999999999, 0.2919770773638969, 50".split(",");
var result = [];
for (index = 0; index < arr.length - 1; index += 2) {
result.push(parseFloat(arr[index + 1]));
}
注意 - 由于使用了parseFloat
,这也是数字而不是字符串