【问题标题】:convert string to array of numbers in javascript [closed]在javascript中将字符串转换为数字数组[关闭]
【发布时间】:2014-05-20 13:21:00
【问题描述】:

如何将下面的字符串转换成javascript中的数组

var data = "[
  [[1400586475733,-1],
  [1400586535736,-1],
  [1400586595739,-1],
  [1400586655742,-1],
  [1400586715745,-1]],
  [[1400586475733,0],
  [1400586535736,0],
  [1400586595739,0],
  [1400586655742,0],
  [1400586715745,0]]
]";

预期输出是

data[0] = [[1400586475733,-1],[1400586535736,-1],[1400586595739,-1],[1400586655742,-1],[1400586715745,-1]]; ==> of type object Array

data[0][0] = 1400586475733 ==> of type number
data[0][1] = -1 ==> of type number

【问题讨论】:

  • 多尝试,这是自学的好任务。
  • @brbcoding:我迭代数据并将每个项目推入新数组。但其中的值仍然是字符串类型。无法获得预期的输出
  • @sraina String 是什么意思?他们有value=string 还是那些奇怪的数字String?如果后者是真的var num=Math.parseInt(string);同时在数组中推送数据可能会对您有所帮助!
  • @putvande 谢谢,成功了!!我最初无法使用 JSON.parse,因为我使用的是不支持 JSON.parse 的 ie9。后来我下载了 json2.js 库并得到了预期的结果..

标签: javascript arrays string


【解决方案1】:

我还没有彻底尝试过,但它应该可以工作:

var string = "[[[1400586475733,-1],[1400586535736,-1],[1400586595739,-1],[1400586655742,-1],[1400586715745,-1]],[[1400586475733,0],[1400586535736,0],[1400586595739,0],[1400586655742,0],[1400586715745,0]]]";


var dataFromString = string.split(",");

var finalArray = [];

var arrayStartRegEx = new RegExp(/^\[/);
var arrayEndRegEx = new RegExp(/\]$/);


var currentArray = finalArray;

var arrayHistory = [];

for(var i = 0; i < dataFromString.length; i++) {

var currentString = dataFromString[i];

var closingArray = false;

    while(arrayStartRegEx.test(currentString) === true) {
        // Save previous array
        // createArray
        // add to big array
        // currentArray = createdArray
        // remove bracket
        var arr = []
        arrayHistory.push(currentArray);
        currentArray.push(arr);
        currentArray = arr;
        currentString = currentString.slice(1,currentString.length - 1);        
    } 
    while(arrayEndRegEx.test(currentString) === true){  
        // remove bracket
        // add element to array
        // close currentArray
        // currentArray = big array
        currentString = currentString.slice(0,-1);
        if(!closingArray) {
            var string = currentString.replace(/\]/g, '');
            // Use parseFloat if you know it's going to be a float
            currentArray.push(parseInt(string));
            closingArray = true;
        }

        currentArray = arrayHistory.pop();

    } 
    if(arrayStartRegEx.test(currentString) === false && arrayEndRegEx.test(currentString) === false) {
        // add element to array
        currentArray.push(parseInt(currentString))
    }

}

console.log(finalArray);

【讨论】:

  • 感谢您的回答,部分解决了。我认为可能有一些更简单的方法。
  • 嗨@sraina 你说的部分解决是什么意思?我没有解决问题吗?我重新编辑了它,以便将字符串转换为整数。
  • 嗨@sraina,简单地做一个 var array = JSON.parse(data) 你就会得到你想要的。
  • 嗨@David 感谢最后的回复,使用 json2.js 库的 JSON.parse 方法得到了预期的结果
猜你喜欢
  • 2017-02-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-24
  • 2013-09-17
  • 1970-01-01
  • 2022-11-29
  • 1970-01-01
相关资源
最近更新 更多