如何在JavaScript中将我的3D数组保存到JSON文件中?我怎样才能读取JSON并将其转换回3D数组?
数组的格式为[x][y][k]
。
我使用这个数组来映射棋盘,其中x,y是坐标,k是0或1或2代表颜色。
数组如下所示:[0,0,0],[0,1,0],[0,2,1],[0,3,2],...,[18,18,0]
。
以下列方式初始化数组:
var chessBoard = [];
for(var i = 0; i < 15; i++){
chessBoard[i] = [];
for(var j = 0; j < 15; j++){
chessBoard[i][j] = 0;
}
}
我希望每按一下按钮就能保存这个数组。怎么办呢?
答案 0 :(得分:1)
您可以使用JSON.stringify ()
将数组转换为JSON数据字符串,并且可以使用JSON.parse ()
将JSON数据字符串转换回实际数组。
喜欢这个......
/* YOUR CODE */
var chessBoard = [];
for(var i = 0; i < 15; i++){
chessBoard[i] = [];
for(var j = 0; j < 15; j++){
chessBoard[i][j] = 0;
}
}
// Convert array into JSON data string
var chessJSON = JSON.stringify (chessBoard);
// Convert JSON data string back into array
var chessBoard = JSON.parse (chessJSON);
但是,您不能将JSON数据写入普通JavaScript中的文件中。您可以在Node.js和其他服务器端JavaScript中,但不能在浏览器中使用JavaScript。如果JavaScript在浏览器中运行,您需要将数据发送到服务器端程序,或者为用户提供数据的下载链接。
答案 1 :(得分:1)
chessBoard
是一个对象,所以它当然可以很容易地序列化和下载:
const chessBoard = [];
for (let i = 0; i < 15; i++) {
chessBoard[i] = [];
for (let j = 0; j < 15; j++) {
chessBoard[i][j] = 0;
}
}
download(JSON.stringify(chessBoard), 'chessboard.json', 'application/json');
function download(content, name, type) {
const a = document.body.appendChild(document.createElement('a'));
const file = new Blob([content], {
type: type
});
a.href = URL.createObjectURL(file);
a.download = name;
a.click();
}