将数组数组字符串转换为 Javascript 数组数组的优雅方法
Elegant way to convert string of Array of Arrays into a Javascript array of arrays?
我有一个 ajax 请求,它返回如下值列表:
"[-5, 5, 5], [-6, 15, 15], [7, 13, 12]"
我需要它是一个带有数字的 javascript 数组:
[[-5, 5, 5], [-6, 15, 15], [7, 13, 12]]
我试图将"["和"]"替换为"|",然后按"|"拆分,然后按","拆分每个项目并将它们添加到数组中,但这根本不优雅。
你们有什么建议吗?
您可以使用
JSON.parse()
将该字符串转换为数组,只要先手动将其包装在某些括号中即可:
var value = "[-5, 5, 5], [-6, 15, 15], [7, 13, 12]";
var json = JSON.parse("[" + value + "]");
console.log(json);
不过,如果可能的话,我建议在服务器上更正输出。
这个解决方案在实践中是愚蠢的 - 绝对像其他人所说的那样使用JSON.parse
- 但为了享受正则表达式的乐趣,你在这里:
function getMatches(regexp, string) {
var match, matches = [];
while ((match = regexp.exec(string)) !== null)
matches.push(match[0]);
return matches;
}
function parseIntArrays(string) {
return getMatches(/'[[^']]+']/g, string)
.map(function (string) {
return getMatches(/'-?'d+/g, string)
.map(function (string) {
return parseInt(string);
});
});
}
parseIntArrays("[-5, 5, 5], [-6, 15, 15], [7, 13, 12]");
如果您正在生成数据并且信任它,只需使用 eval
:
var string = "[-5, 5, 5], [-6, 15, 15], [7, 13, 12]"
var arrays = eval('[' + string + ']');
或者,开始返回格式正确的 JSON。
在函数中
var strToArr = function(string){ return JSON.parse('[' + string + ']')}
console.log(strToArr("[-5, 5, 5], [-6, 15, 15], [7, 13, 12]"));
var string = "[-5, 5, 5], [-6, 15, 15], [7, 13, 12]";
var arr = [];
var tmp = string.split('], ');
for (var i=0; i<tmp.length; i++) {
arr.push(tmp[i].replace(/'[|']/g, '').split(', '));
}
在我的iPad上打字,所以我提前为任何错别字道歉。
相关文章:
- javascript:更改应用到的数组的数组方法列表
- 使用Knockout.js的数组方法将地图标记添加到Google地图
- 模拟 javascript 的数组方法.面向对象的Javascript,作者:Stoyan Stefanov
- ECMA5 数组方法 - 查找数组中某个类型的第一个对象
- 在 Object.prototype 上为 NodeList 对象实现数组方法是否是一个很好的实践?
- 有没有一种方法可以实现chain.push和.shift数组方法
- 'document.getElementsByClassName' 的结果没有定义像 'map' 这样的数组方法,即使它
- JavaScript重写数组方法
- 有谁能告诉我在Shift的引擎盖下发生了什么吗?JavaScript中的Unshift()数组方法
- 如何删除数据库使用数组方法DELETE
- .push数组方法不工作角过滤器
- 包含数组方法的JavaScript函数没有返回期望的结果
- 对象/数组方法:修改原始的还是创建新的?指导方针
- 用自定义方法替换本机对象(数组)方法:是否安全?兼容的
- Javascript数组方法查找超过第一个值的indexOf
- 数组方法"some"的使用:收到意外的结果
- Javascript:使对象继承数组方法
- 使用数组方法遍历列表项
- 使用数组方法时返回方括号的函数
- 数组方法和连接函数组合输出在 javascript 中无法理解