如何将数组保存到文件并在我的代码中对其进行操作?

How do I save an array to a file and manipulate it from within my code?

这在 p5.js 中,其中包括大多数 javascript 功能! 我正在尝试为我的游戏制作一个保存文件。我的意思是:用户在我的游戏中按下了保存按钮。它更新保存在游戏包中文件中的数组,玩家继续玩。我将如何做这样的事情(创建我的代码可以访问和更改的文件)。

    var SM = {
//save files
    sf1: [1,0,0,0,0],
         [0,0,0,0,0],
         [0,0,0,0,0],

    sf2: [1,0,0,0,0],
         [0,0,0,0,0],
         [0,0,0,0,0],

    sf3: [1,0,0,0,0],
         [0,0,0,0,0],
         [0,0,0,0,0],
};

还有一件事(对于从这里开始的处理编码器):我尝试使用像 saveStrings() 这样的处理函数;和 loadStrings();但我无法将 saveStrings() 保存到特定位置,也无法正确加载 txt 文件。这是我为此使用的代码:

var result;
function preload() {
  result = loadStrings('assets/nouns.txt');
}

function setup() {
  background(200);
  var ind = floor(random(result.length));
  text(result[ind], 10, 10, 80, 80);
}

我在 sketch 文件夹中有一个名为 assets 的文件夹,assets 有一个名为 nouns 的 txt 文件,里面有字符串(从 saveStrings 下载然后手动移动)但是草图不会通过加载屏幕?

如果您 运行 从浏览器中下载它,您将无法按需要保存或加载文件,就这样。在浏览器中保存和加载文件 JavaScript 涉及用户交互,他们可以选择文件及其保存位置。

如果您想将其保存在本地,而不是尝试将其写入文件,您应该从 localStorage 写入和读取它,这样就可以了。

// save
localStorage.setItem('saveData', data);

// load
const data = localStorage.getItem('saveData');

如果它是某种游戏 运行 直接在客户端(在浏览器之外),就像在 Node.js 中编写的那样,那么您需要使用 fs 函数.


扩展一下,如果您将保存数据作为对象:

const saveData = {
  state: [1,2,3],
  name: 'player'
};

然后要保存它,您只需调用:

localStorage.setItem('saveData', JSON.stringify(data));

您需要在保存时对其进行字符串化以使其正常工作。要读回它,您可以用 getItem():

读回
const data = JSON.parse(localStorage.getItem('saveData') || '{}');

(如果以前没有保存过,那么额外的 || '{}' 位将会处理并给你一个空对象。)

这实际上比尝试编写一个您随后会读入的 JavaScript 文件要容易得多。即使您正在编写一个文件,您也可能希望将其写为 JSON,不是 JavaScript.

为了将字符串保存到 Javascript 中的文件中,我会向您推荐这个 previous Whosebug question,它提供了一个 link 非常清晰且 easy-to-use 的库管理 Javascript.

中的文件