【问题标题】:Converting int array in string format to array将字符串格式的int数组转换为数组
【发布时间】:2017-04-04 15:32:25
【问题描述】:

我有一个以字符串格式存储的整数数组。

例如:

"[3,2,1]"

如何将其转换为实际数组?

我已经到处搜索了一个简单的解决方案,但我似乎找不到它。

将字符串传递到 JSON.parse 和 $.parseJSON 会导致索引 0 显示“[”。所以我假设它什么也没做。

【问题讨论】:

  • 将字符串传递给JSON.parse函数。

标签: javascript arrays type-conversion


【解决方案1】:

从您更新的描述看来,您有一个以 " 开头和结尾的字符串,因此简单的 JSON.parse 将不起作用,因为它只会将 " 之间的内容转换为字符串。您需要 JSON.parse 两次,因为您在字符串中嵌入了一个整数数组,或者手动解析。

JSON.parse 两次:

var str = '"[3,2,1]"';
var parsedStr = JSON.parse(str); // results in a string with contents [3,2,1]
var intArray = JSON.parse(parsedStr); // results in an int array with contents [3,2,1]

或者,如果格式可能在某个时候变为非 JSON,手动方式:

var str = '"[3,2,1]"';
var intArray = [];

str.substr(2,str.length-3).split(/,/g).forEach(function(numStr) {
  intArray.push(parseInt(numStr));
});

【讨论】:

  • 正如我在编辑中提到的 JSON.Parse 什么都不做。使用第二种方法,第一个索引是 NaN,但其他索引都很好。
  • 已更新。听起来你有一个包含 JSON 字符串的字符串,该字符串包含一个 int 数组,而不是一个包含 int 数组的字符串。
【解决方案2】:

所以我发现我需要将第一个和最后一个字符切掉,因为由于某种原因,字符串被返回为“[3,2,1]”而不是“[3,2,1] " 即使它是不带引号存储的。

【讨论】:

    【解决方案3】:

    你可以使用 jQuery $.parseJSON() 方法:

    var arr = $.parseJSON("[3,2,1]");
    

    var str = "[3,2,1]";
    
    console.log( $.parseJSON(str) );
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

    或者纯javascript方法JSON.parse()

    var arr = JSON.parse("[3,2,1]");
    

    希望这会有所帮助。

    var str = "[3,2,1]";
    
    console.log( JSON.parse("[3,2,1]") );
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

    【讨论】:

      【解决方案4】:

      var text = "[3,2,1]";
      var obj = JSON.parse(text);
      console.log(obj);

      【讨论】:

        【解决方案5】:

        var arr = JSON.parse("[3,2,1]")

        【讨论】:

          猜你喜欢
          • 2012-03-26
          • 1970-01-01
          • 2016-03-07
          • 2021-12-21
          • 2016-08-14
          • 1970-01-01
          • 1970-01-01
          • 2016-01-27
          • 2013-05-31
          相关资源
          最近更新 更多