【发布时间】:2021-02-11 20:48:15
【问题描述】:
我有一个将数据写入“sequence.json”文件的 Javascript 文件。但是,我的控制台中不断返回 NULL 的重复。然后,当我查看我的“sequence.json”文件时,它会更新,但会更新到"\"i\": 99" 或任何基于inputNum 的最后迭代数字。 JSON 文件也不像 JSON,它应该像这样的对象数组:
[{"i":1,"addedSum":2},{ "i":2,"addedSum":4 }]
这是我的代码。它可能有很多错误,这是我第一次尝试这样的事情,如果有点混乱,请道歉。
需要 fs 并使用 readFileSync():
var fs = require("fs");
const data = fs.readFileSync("sequence.json");
var numberCount = JSON.parse(data);
let numberObj = JSON.stringify(numberCount);
let inputNum = 100;
InitCount() 初始化计数并假设将i 和addedSum 推送到我的“sequence.json”文件中。相反,它返回 NULL 的迭代,而我的 sequence.JSON 文件仅包含:"\"i\": 99"。
const InitCount = (inputNum) => {
for (let i = 0; i < inputNum; i++) {
let addedSum = i + i;
console.log(i);
let data = JSON.stringify(`"i": ${i}`, `addedSum:${addedSum}`);
fs.writeFile("sequence.json", data, finished);
function finished(err) {
console.log(err);
}
}
};
addCount() 应该查看“sequence.JSON”中的最后一个数字,如果 inputNum 大于数组中的最后一个数字,则继续计数。示例:如果数组为空,并且您输入 100,则 sequence.JSON 文件应反映 100 个对象。如果你然后输入 200,那么它的函数应该识别“sequence.json”数组中的最后一个数字,i,是 100,然后继续计数到 200,当然从 101 开始,然后将新数字添加并写入“sequence.JSON”。
function addCount(arr, inputNum) {
let i = arr.length;
for (i ? arr[i - 1].len + 1 : 0; i <= inputNum; i++) {
let addedSum = i + i;
let data = JSON.stringify(`"i": ${i}`, `addedSum:${addedSum}`);
fs.writeFile("sequence.json", data, finished);
function finished(err) {
console.log(err);
}
addCount(numberObj, inputNum);
}
}
return InitCount(inputNum);
更新:代码返回错误 Cannot read property 'readFile' of undefined
const fs = require("fs");
let inputNum = 200;
async function readSequenceJSON() {
let data = await fs.promises.readFile("numberLine.json");
return JSON.parse(data);
}
function writeSequenceJSON(data) {
let str = JSON.stringify(data);
return fs.promises.writefile("numberLine.json", str);
}
async function nextSequence(inputNum) {
let data = await readSequenceJSON();
for (let i = 0; i <= inputNum; i++) {
const addedSum = i + i;
// only push numbers whose frequencies are "in bounds" of num
if (frequency <= inputNum) {
data.push({ i, addedSum });
}
}
function addValues(data, inputNum) {
for (
let i = data.length ? data[data.length - 1].i + 1 : 0;
i <= inputNum;
i++
) {
const addedSum = i + i;
data.push({ i, addedSum });
}
}
【问题讨论】:
标签: javascript node.js arrays json