提问者:小点点

将csv文件转换为javascript对象


我有一个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 }
}

共2个答案

匿名用户

我肯定有人会有一些代码高尔夫的乐趣与这一个,但这里有一个简单的解决方案。 这与数据集非常耦合,所以我建议在使用这个解决方案之前,考虑是否有不同形状的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)