繁体   English   中英

将 Javascript 字符串转换为文字数组

[英]Convert Javascript string to literal array

在 python 中存在 ast.literal_eval(x) ,如果 x 是"['a','b','c']"那么它将返回列表['a','b','c'] Javascript / jQuery 中是否存在类似的东西,我可以将存储在表格单元格中的数组作为 [x,y,z] 并将其转换为文字 JavaScript 数组?

我宁愿避免任何可能容易出错的复杂解决方案,因为这可能涉及在逗号上拆分或转义字符。

编辑:我应该给出一些更好的例子:

['la maison', "l'animal"]是一个遇到错误的例子,因为替换单引号或双引号可能会导致问题,因为无法保证它会是哪个。

可以利用String.prototype.replace()JSON.parse()

请参阅下面的粗略示例。

 // String.prototype.replace() + JSON.parse() Strategy. const input = "['a','b','c']" // Input. const array = JSON.parse(input.replace(/'/g, '"')) // Array. console.log(array) // Proof.

虽然,鉴于您的更新/更复杂的用例, eval()可能更合适。

 // eval() Strategy. const input = `['la maison', "l'animal"]` // Input. const dangerousarray = eval(input) // Array. const safearray = eval(`new Array(${input.replace(/^\\[|\\]$/g, '')})`) console.log(dangerousarray) // Proof. console.log(safearray) // Proof.

但是,由于安全/速度缺陷,MDN 文档不鼓励使用eval()

因此,人们可以选择类似于以下的方法:

 // Heavy Replacement Strategy. const input = `['la maison', 'l\\'animal']` // Input. const array = input .replace(/^\\[|\\]$/g, '') // Remove leading and ending square brackets ([]). .split(',') // Split by comma. .map((phrase) => // Iterate over each phrase. phrase.trim() // Remove leading and ending whitespace. .replace(/"/g, '') // Remove all double quotes ("). .replace(/^\\'|\\'$/g, '') // Remove leading and ending single quotes ('). ) console.log(array) // Proof.

在 JavaScript 中,您可以使用 eval() 函数,如下所示:

 // define the string to evaluate var str_to_evaluate = 'new Array("Saab", "Volvo", "BMW")'; // retreive the result in a array var cars = eval(str_to_evaluate); // print the array console.log(cars);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM