将字符串更改为数组
Posted
技术标签:
【中文标题】将字符串更改为数组【英文标题】:Change string into array 【发布时间】:2018-07-04 13:44:05 【问题描述】:我是 Angular 和 TS 的初学者。
我想获得像 [1,2,3,4]
这样的整数数组,但是 jasper 服务器将输出作为字符串 "[1,2,3,4]"
。
那么我如何使用 Type Script 来更改它。
数据:
[
LABEL:'CR FAILURE MESSAGES',
DATASET:'[3,3,10,15,21,35,35,81]'
,
LABEL:'CR SUCCESS MESSAGES',
DATASET:'[1,4,31,34,63,78,219,312,1076]'
,
LABEL:'CR TOTAL MESSAGES',
DATASET:'[4,7,55,66,93,98,300,312,1086]'
,
LABEL:'PR FAILURE MESSAGES',
DATASET:'[2,5,6,12,18,19,23,48]'
,
LABEL:'PR SUCCESS MESSAGES',
DATASET:'[4,5,10,22,32,65,101,139]'
]
【问题讨论】:
【参考方案1】:您可以使用 JSON.parse 为您执行此操作。
let obj =
"LABEL":"CR FAILURE MESSAGES",
"DATASET":"[3,3,10,13,21,35,35,81]"
;
let datasetArray = JSON.parse(obj.DATASET); // Generates the array
console.log(datasetArray);
你得到一个包含在字符串中的数组有什么原因吗?如果服务器只返回一个字符串化的 JSON 对象,我希望在整个事情上调用 JSON.parse
只会构建与对象的其余部分内联的数组。
【讨论】:
你能检查一下吗 您应该能够在数组上扩展相同的方法。只需在每个DATASET
字段上调用 JSON.parse
。【参考方案2】:
这是我的解决方案
您可以删除第一个和最后一个字符以获得“1,2,3,4”,然后使用split将其变成数组
代码注释很好,慢慢来逐行理解;
var input = "[3,3,10,13,21,35,35,81]"
console.log(input)
//cleaning the input
var cinput = input.substr(1).slice(0, -1);
console.log(cinput)
//using split to turn it into an array by using the ',' as seperator
var output = cinput.split(',')
//the result
console.log(output)
var parsedarray = []
//to parse each array element to int
for (var i = 0, len = output.length; i < len; i++)
parsedarray[i] = parseInt(output[i]);
//parsed numbers inside the array
console.log(parsedarray)
【讨论】:
以上是关于将字符串更改为数组的主要内容,如果未能解决你的问题,请参考以下文章
MongoDB如何将数组中的字段类型从字符串更改为数组并保持原始值