在python中存在ast.literal_eval(x),其中如果x是"['a','b','c']"
,那么它将返回列表['a','b','c']
。在Javascript / jQuery中是否存在类似的东西,我可以将存储在表格单元格中的数组作为[x,y,z]并将其转换为文字JavaScript数组?
我宁愿避免任何可能容易出错的复杂解决方案,因为这可能涉及拆分逗号或转义字符。
编辑:我应该给出一些更好的例子:
['la maison', "l'animal"]
是一个遇到错误的示例,因为替换单引号或双引号可能会导致问题,因为不能保证它会出现问题。
答案 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');
}