[英]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.