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

时间:2018-02-08 02:54:25

标签: javascript arrays string

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

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

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

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

2 个答案:

答案 0 :(得分:4)

您可以利用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.




答案 1 :(得分:2)

在JavaScript中,您可以使用eval()函数,例如样本波纹管:



function av_mobo($mobo, $av_mobo, $al_mobo) { 
$this->db->set('qty_available_mobo', 'qty_available_mobo + ' . (int) $av_mobo, FALSE);
$this->db->set('qty_fisik_mobo', 'qty_fisik_mobo + ' . (int) $av_mobo, FALSE);
$this->db->set('qty_alocated_mobo', 'qty_alocated_mobo + ' . (int) $al_mobo, FALSE);
$this->db->set('qty_fisik_mobo', 'qty_fisik_mobo - ' . (int) $al_mobo, FALSE);

$this->db->where('tipe_mobo', $mobo);
$this->db->update('tbl_mobo');
}