如何将“ 0:2017-12-31T19:00:00.000Z 1:2018-01-09T19:00:00.000Z”转换为数组?

时间:2019-03-25 17:17:53

标签: javascript

我有以下csv行:

{ "name": "Alliant Energy - Iowa", "metering_type": "Annual Net", "metering_dates": "\"0:2017-12-31T19:00:00.000Z 1:2018-01-09T19:00:00.000Z \"", "meter_values": "\"0:'NY' 1:'LG' 2:'BG Los'\"" }

我要将metering_datesmeter_values转换为数组的地方。

我们可以看到每个新数组项都有索引号: 0:value 1:value ... n:value

更新: 这实际上来自csv文件,不仅日期可以是数组项。 例如 0:'blah blah' 1:'blah blah'

更新2: 我需要某种方式来知道字符串是数组还是字符串:

0:'blah blah' 1:'blah blah'->数组

'blah blah'->不是数组

2 个答案:

答案 0 :(得分:2)

您可以使用splitmap

let str = "0:2017-12-31T19:00:00.000Z 1:2018-01-09T19:00:00.000Z"

let op = str.split(' ').map(e=> e.replace(/^\d+:/,''))

console.log(op)

您可以测试模式\d+:,以检查其是否为数组格式

let obj = {
  "name": "Alliant Energy - Iowa",
  "metering_type": "Annual Net",
  "metering_dates": "\"0:2017-12-31T19:00:00.000Z 1:2018-01-09T19:00:00.000Z \"",
  "meter_values": "\"0:'NY' 1:'LG' 2:'BG Los'\"",
  'test': 'some value some value'
}

let {meter_values:value, metering_dates:date,test} = obj
let testFunc = (value) => /^(?:")?\d+:/.test(value) ? 'Array' : 'String'
console.log(testFunc(value))
console.log(testFunc(date))
console.log(testFunc(test))
console.log(value.split(/\s+(?=\d:)/g))

答案 1 :(得分:0)

尝试使用以下正则表达式进行拆分

let arr = "0:2017-12-31T19:00:00.000Z 1:2018-01-09T19:00:00.000Z 2:balh blah "

let out = arr.split(/\b\d{1}:/).slice(1)
console.log(out)