-2

我的 Ajax 调用"[['Best Value (62)',62 ],['LPTA (32)',32 ],] "作为返回值。我需要将其作为数组传递。有没有办法在不求助于的情况下将字符串变成数组eval()

4

3 回答 3

0

如果您去掉尾随逗号并将双引号更改为转义双引号,并且数组中的任何其他内容格式正确,则可以使用 JSON.parse 将字符串转换为数组。如果您有权访问服务器端代码,您可能希望在那里而不是在您的 js.js 中进行更改。

JSON.parse("[[\"Best Value (62)\",62],[\"LPTA (32)\",32]]")
于 2013-09-27T15:10:36.777 回答
0

您拥有的不是 JSON,而是有效的 JavaScript(假设额外的逗号是复制粘贴错误)。而且,尽管我不喜欢它,但您可以使用 eval:

// convert the input in to a javascript array
var o = eval("[['Best Value (62)',62],['LPTA (32)',32]]");
// use jQuery map to grab only the first array value and return
// each selection back as an array
$.map(o, function(a){
  return a[0];
}); // ['Best Value (62)','LPTA (32)'];

如果多余的逗号仍然存在,您可以使用更多处理来摆脱它:

var data = "[['Best Value (62)',62],['LPTA (32)',32],]";
var o = eval(data.replace(/\],\]$/,']]'));
$.map(o, function(a){
  return a[0];
});
于 2013-09-27T15:14:35.790 回答
0
JSON.parse("[['Best Value (62)',62 ],['LPTA (32)',32 ],]".replace(/(,])$/, ']').replace(/'/g, '"'))
于 2013-09-27T15:17:11.113 回答