javascript - 如何将“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'
--> 不是数组
解决方案
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))
推荐阅读
- android - Android Studio 4.0.1、Gradle 和 React Native:AndroidManifest.XML 存在时未找到
- prolog - 以 4 为底的回文
- php - 无法使用我的 php.ini 文件中设置的常量
- reactjs - 在反应本机文本输入的onChange函数上,类型'number'.ts(2339)上不存在获取属性'值'
- kubernetes - 使用 kubespray 的 Kubernetes kubelet-certificate-authority 会导致主节点的证书验证错误
- python - 将集合数据以列格式写入 .txt 文件
- javascript - 如何为机器人中的人赋予特殊权限?不和谐.js
- python - Python 需要一些初学者语法的帮助
- flutter - 容器小部件的滑动手势
- android-studio - 我在使用 SQLite 数据库添加数据时遇到了麻烦