首页 > 解决方案 > 如何将“0:2017-12-31T19:00:00.000Z 1:2018-01-09T19:00:00.000Z”转换为数组?

问题描述

我有以下 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_dates并转换meter_values为数组。

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

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

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

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

'blah blah'--> 不是数组

标签: javascript

解决方案


您可以使用拆分映射

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))


推荐阅读