【问题标题】:Given an array as a string, how to best convert that to an array?给定一个数组作为字符串,如何最好地将其转换为数组?
【发布时间】:2016-10-14 08:08:14
【问题描述】:

在 JavaScript 中,给定一个字符串形式的数组:

example1: "[1, 2, 3]"
example2: "[]"
example3: "["apple", true, 42]"

在没有 JSON.parse 的情况下将其转换为数组的最佳方法是什么?

【问题讨论】:

  • 使用JSON.parse()

标签: javascript arrays string type-conversion


【解决方案1】:

这是@4castle 建议的使用 eval() 的有效解决方案。

function parser(str) {
    return eval('(' + str + ')');
}

【讨论】:

  • 那行得通!可能不需要在字符串中添加括号。
  • eval(str) 可以处理除花括号对象之外的所有内容。但是,是的,eval(str) 可以在数组上工作,并且不需要括号。
【解决方案2】:

你可以试试这样的:

var ar = '["bonjour", true, 42]';
function reduce(element, index, array){
  if (index === 0) return element.slice(2, -1);
  if (index === array.length - 1) return element.slice(1, -1);
  return element;
}
var map = ar.split(",").map(reduce)
console.log(map); // [ 'bonjour', ' true', '42' ]

【讨论】:

    【解决方案3】:

    使用JSON.parse()。它接受一个 JSON 字符串作为参数,并返回它所描绘的结构。

    或者,你可以使用eval()但我不推荐这个

    var json = '["apple", true, 42]';
    
    console.log(json);
    console.log(JSON.parse(json));
    console.log(eval(json));

    【讨论】:

    • 当然。我一直在寻找另一种方法。我会修改原来的问题。
    • @campallison 你能解释一下为什么吗?这是一个不寻常的要求。
    • 在学习 JS 的过程中,我一直在重新创建一些内置方法。在这个特定的例子中,我试图看看我是否可以构建一个速度不错的 JSON 解析器(可以处理大型数据集)。我相信你是对的,在任何实际应用程序中使用除 JSON.parse 之外的任何东西都是不可取的。
    • @campallison 有趣的想法,但如果你想为学习体验做这件事,为什么不在问题中先尝试一下呢?或者,如果您已经有工作代码,请在“回答您自己的问题”下发布。
    • 我在上面发布了一个答案。想看看并提供建议吗?谢谢!
    猜你喜欢
    • 2021-05-09
    • 1970-01-01
    • 1970-01-01
    • 2021-12-13
    • 1970-01-01
    • 1970-01-01
    • 2021-11-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多