将javascript字符串拆分为数组

将javascript字符串拆分为数组,javascript,arrays,Javascript,Arrays,我有以下脚本字符串: 响应 "[[[#],[b,#],[b,w,b,b,b,#],[b,#],[b,w,w,b,#]],[[b,#],[b,b,#],[b,b,w,#],[b,b,b,#],[b,b,#]],[[b,#],[b,b,b,b,#],[b,w,#],[b,b,b,#],[b,#]],[[b,#],[b,#],[w,w,w,#],[b,b,w,w,#],[b,w,#]],[[b,#],[b,b,b,b,#],[b,w,b,#],[b,w,#],[b,b,#]]]" 这对应于一个棋盘游

我有以下脚本字符串:

响应

"[[[#],[b,#],[b,w,b,b,b,#],[b,#],[b,w,w,b,#]],[[b,#],[b,b,#],[b,b,w,#],[b,b,b,#],[b,b,#]],[[b,#],[b,b,b,b,#],[b,w,#],[b,b,b,#],[b,#]],[[b,#],[b,#],[w,w,w,#],[b,b,w,w,#],[b,w,#]],[[b,#],[b,b,b,b,#],[b,w,b,#],[b,w,#],[b,b,#]]]"
这对应于一个棋盘游戏,并且哪个字段(例如[b,w,b,b,b,#])是一个具有b缺少和w白色棋子的单元格。#是堆栈的顶部

为了创建一个tile数组,我需要解析它

我有这个:

XMLscene.prototype.readBoard = function(data){
    var response = data.target.response;
    console.log("REPONSE  NO PARS" + response);
    response = response.split("],");
    console.log("REPONSE " + response);
    response[0] = response[0].substring(1);
    response[5] = response[5].substring(0, response[5].length - 2);
    for(var i = 0; i < response.length; i++)
    {
        response[i] = response[i].substring(1);
        response[i] = response[i].split("),");
        for(var j = 0; j < response[i].length; j++)
            response[i][j] = response[i][j].substring(5);
    }
    this.scene.board.loadTiles(response);
    //this.scene.client.getPrologRequest('quit', 0, 1);
};
xmlsecene.prototype.readBoard=函数(数据){
var响应=data.target.response;
控制台日志(“响应无PAR”+响应);
response=response.split(“],”);
控制台日志(“响应”+响应);
响应[0]=响应[0]。子字符串(1);
响应[5]=响应[5]。子字符串(0,响应[5]。长度-2);
对于(变量i=0;i
要在此函数中进行分析,请执行以下操作:

gameBoard.prototype.loadTiles = function(board){
    console.log("BOARD : " + board);
    this.tiles = [];
    for (var i = 0; i < board.length; i++){
        for (var j = 0; j < board[i].length; j++){
            var player = board[i][j].split(",")[0];
            console.log("PLAYER : " + player);
            var type = board[i][j].split(",")[1];
            console.log("Type : " + type);
            if (type != "e") {
                var tile = this.createTile(type, this.scene ,i*6 + j+100, player);
                tile.line = i;
                tile.col = j;
                this.tiles.push(tile);
            }
        }
    }


}
gameBoard.prototype.loadTiles=功能(板){
控制台日志(“板:+BOARD”);
this.tiles=[];
对于(变量i=0;i
我想要的董事会结构如下: 对于第一个堆栈:
[#]
是个空牢房

[b,#]
-一块电池-黑色

[b,w,w,b,#]
一个单元格,底部有一个黑色部分,顶部有两个白色部分和一个黑色部分,因此黑色播放器是堆栈的所有者

堆栈所有者是将其棋子放在堆栈顶部(最接近#)的玩家

有没有办法得到一个数组,每个堆栈都是数组的元素


请修改您的字符串,使其如下所示

var myString = '[[[#],[b,#],[b,w,b,b,b,#],[b,#],[b,w,w,b,#]],[[b,#],[b,b,#],[b,b,w,#],[b,b,b,#],[b,b,#]],[[b,#],[b,b,b,b,#],[b,w,#],[b,b,b,#],[b,#]],[[b,#],[b,#],[w,w,w,#],[b,b,w,w,#],[b,w,#]],[[b,#],[b,b,b,b,#],[b,w,b,#],[b,w,#],[b,b,#]]]' 
将元素替换为“”

现在运行以下命令:

var myArrayObject = JSON.parse(myString);
您刚刚将其转换为数组

示例代码:



修改字符串,使其如下所示

var myString = '[[[#],[b,#],[b,w,b,b,b,#],[b,#],[b,w,w,b,#]],[[b,#],[b,b,#],[b,b,w,#],[b,b,b,#],[b,b,#]],[[b,#],[b,b,b,b,#],[b,w,#],[b,b,b,#],[b,#]],[[b,#],[b,#],[w,w,w,#],[b,b,w,w,#],[b,w,#]],[[b,#],[b,b,b,b,#],[b,w,b,#],[b,w,#],[b,b,#]]]' 
将元素替换为“”

现在运行以下命令:

var myArrayObject = JSON.parse(myString);
您刚刚将其转换为数组

示例代码:



您可以像这样将数据转换为JSON,忽略散列,因为它们似乎提供了已知的信息(堆栈在右侧结束):

例如,您可以在(i,j)处为堆栈识别当前播放器,如下所示:

var player = board[i][j].slice(-1)[0]; // last element on the stack
片段:

//示例数据
(b,w,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,,,[b,[b,35;,[b,(b,b,b,b,w,w,w,b,w,b,[b,b,w,w,[b,[b,b,[b,w,b,b,b,b,b,b,,,[b,,,[b,,[b,b,,,,,,[b,,,[b,b,b,,,,,,,[b,b,b,b,w,b,b,w,b,b,b,b,b,b,b,b,b,b,b,b,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[[[[b,,,,,,,,,,,,,,#]]、[[b,#]]、[b,#]、[w,w,w,#]、[b,b,w,w,#]、[b,w,#]、[b,#]、[b,b,b,b,b,#]、[b,w,b,#]、[b,w,#]、[b,w,#]、[b,b,#]、[b,b,#]];
//转换为嵌套数组
var board=JSON.parse(response.replace(/,?#/g',).replace(/[bw]/g',“$&”);
//在3,3处打印堆栈
log(board[3][3].join(',');
//打印该堆栈的播放器:

console.log(board[3][3].slice(-1)[0])您可以像这样将数据转换为JSON,忽略散列,因为它们似乎提供了已知的信息(堆栈在右侧结束):

例如,您可以在(i,j)处为堆栈识别当前播放器,如下所示:

var player = board[i][j].slice(-1)[0]; // last element on the stack
片段:

//示例数据
(b,w,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,,,[b,[b,35;,[b,(b,b,b,b,w,w,w,b,w,b,[b,b,w,w,[b,[b,b,[b,w,b,b,b,b,b,b,,,[b,,,[b,,[b,b,,,,,,[b,,,[b,b,b,,,,,,,[b,b,b,b,w,b,b,w,b,b,b,b,b,b,b,b,b,b,b,b,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[[[[b,,,,,,,,,,,,,,#]]、[[b,#]]、[b,#]、[w,w,w,#]、[b,b,w,w,#]、[b,w,#]、[b,#]、[b,b,b,b,b,#]、[b,w,b,#]、[b,w,#]、[b,w,#]、[b,b,#]、[b,b,#]];
//转换为嵌套数组
var board=JSON.parse(response.replace(/,?#/g',).replace(/[bw]/g',“$&”);
//在3,3处打印堆栈
log(board[3][3].join(',');
//打印该堆栈的播放器:

console.log(board[3][3].slice(-1)[0])一个快速而肮脏的解决方案是使用引用所有元素,然后将整个结果放入:

[b,w,b,b,b,b,b,b,b,b,b,b,b,#,[b,[b,[b,[b,[b,[b,[b,[b,[b,w,w,w,w,b,[b,w,w,w,b,[b,[b,[b,[b,b,b,b,b,b,b,b,b,b,b,b,b,,,[b,,[b,,,[b,,[b,,[b,,,[b,,[b,,,,,,[b,,,,[b,,[b,,,,,,,[b,[b,b,b,b,b,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[b,w,w,w,w,#],[b,w,#],[b,w,w,w,#],[b,w,#],[b,w,#],[b,#],[b,b,b,b,#],[b,b,w,b,#],[b,w,#],[b,w,#],[b,b,#],[b,b,#]; var res=eval(str.replace(/[bw#]/g,“$&”); 控制台日志(res);
一个快速而肮脏的解决方案是使用引用所有元素,然后将整个结果放入:

[b,w,b,b,b,b,b,b,b,b,b,b,b,#,[b,[b,[b,[b,[b,[b,[b,[b,[b,w,w,w,w,b,[b,w,w,w,b,[b,[b,[b,[b,b,b,b,b,b,b,b,b,b,b,b,b,,,[b,,[b,,,[b,,[b,,[b,,,[b,,[b,,,,,,[b,,,,[b,,[b,,,,,,,[b,[b,b,b,b,b,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[b,w,w,w,w,#],[b,w,#],[b,w,w,w,#],[b,w,#],[b,w,#],[b,#],[b,b,b,b,#],[b,b,w,b,#],[b,w,#],[b,w,#],[b,b,#],[b,b,#]; var res=eval(str.replace(/[bw#]/g,“$&”); 控制台日志(res);
您从哪里获取字符串?有没有可能把它变成真正的JSON?它是从PROLOG程序中解析出来的。它在一个sicstus prolog程序上代表我的电路板,然后你可以进一步将其解析为JSON格式,然后将其解析为javascript对象,这应该比直接将字符串解析为对象要容易得多,因为我有一个#?我做了类似于
response=JSON.parse(response)的事情
JSON.parse(yourString.replace(/[bw#]/g,“$&”)
从哪里获取字符串?有没有可能把它变成真正的JSON?它是从PROLOG程序中解析出来的。它在一个sicstus prolog程序上代表我的电路板,然后你可以进一步将其解析为JSON格式,然后将其解析为javascript对象,这应该比直接将字符串解析为对象要容易得多,因为我有一个#?我