我有一个csv文件,里面有一个机场及其坐标的列表。
JFK, 40.63980103, -73.77890015
LAX, 33.94250107, -118.4079971
SEA, 47.44900131, -122.3089981
如何将内容解析为这样的Javascript对象?
{
JFK: { lat: 40.63980103, lng: -73.77890015 },
LAX: { lat: 33.94250107, lng: -118.4079971 },
SEA: { lat: 47.44900131, lng: -122.3089981 }
}
我肯定有人会有一些代码高尔夫的乐趣与这一个,但这里有一个简单的解决方案。 这与数据集非常耦合,所以我建议在使用这个解决方案之前,考虑是否有不同形状的CSV(如不同的头,行+列等)。
const data = `JFK, 40.63980103, -73.77890015
LAX, 33.94250107, -118.4079971
SEA, 47.44900131, -122.3089981`
const splitByLines = data.split(/\n/)
const splitByCommas = splitByLines.map(arr => arr.split(','))
const output = {}
splitByCommas.map(([loc, lat, lon ]) => {
output[loc] = { lat, lon }
})
console.log(output)
在新行上拆分,在逗号上拆分,并使用reduce来生成对象。
null
var csv = `JFK, 40.63980103, -73.77890015
LAX, 33.94250107, -118.4079971
SEA, 47.44900131, -122.3089981`;
// split on lines
const data = csv.split(/\n/).reduce((obj, line) => {
// split on commas
var parts = line.split(/,/);
obj[parts[0].trim()] = {
lat: +parts[1],
lng: +parts[2],
};
return obj;
}, {});
console.log(data)