javascript - 如何在 OOP 类中更新对象 json

标签 javascript json class oop object

我的 JSON 文件

[
  {
    "id": 1,
    "task": "go dancing",
    "status": false
  },
  {
    "id": 2,
    "task": "Walk",
    "status": false
  }
]

我真的陷入了 OOP,我试图在 json 中找到属性 Status,并且我想将属性 boolean tp 从 false 更新为 true

这是我的代码

static completed(input) {
    const data = Model.getdAll(); // get './data.json' local host, 
    for (let i = 0; i < data.length; i++) {
      if(data[i].id == input){
        data[i].status = true
        Model.writeFile(data);
        return data
      }
    }
  }

当我 console.log( 在那个静态方法上,它是这样的

这是我的 writefile 静态方法

static writeFile(data) {
    return fs.writeFileSync("./data.json", JSON.stringify(data, null, 2) , 'utf8');
  }

//当我console.log(在那个静态方法上时,它是这样的

Model { id: 4, task: 'going to gym', status: true }

当我在 for 循环内写入文件时,在 for 循环之后,实际数据不会更改,并且 status 仍然为 false

最佳答案

考虑使用Array#find。对象将是对数据数组内部对象的引用,因此更改它也会更改数据内部的内容。

const Model = {
  getdAll: function(){ return [{"id":1,"task":"go dancing","status":!1},{"id":2,"task":"Walk","status":!1}] },
  writeFile: function(data){ console.log(JSON.stringify(data, null, 2)) }
}

function completed(input){
    const data = Model.getdAll(); // get './data.json' local host,
    const object = data.find(({id})=>id === input);
    
    if(!object) throw new Error("Object not found");
    object.status = true;
    Model.writeFile(data);
    return data;
}

const res = completed(1);

您还应该记住fs.writeFileSync不返回任何内容,但如果失败,它会抛出错误。

考虑一下,将其包装在 try/catch 中:

static writeFile(data) {
   try {
      fs.writeFileSync("./data.json", JSON.stringify(data, null, 2) , 'utf8');
   }
   catch(e){
      console.warn(e.message);
   }
}

关于javascript - 如何在 OOP 类中更新对象 json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54673903/

相关文章:

javascript - 正则表达式中的 JSLint "insecure ^"

json - 如何使用 jq 合并相同结构的嵌套 json 文件

json - firebase.json 中的缓存控制 header 不起作用

C# public class where T : class, Class, new() 混淆

vb.net 进程类未到达 process.exited 事件

javascript - 如何接受仅添加媒体文件(视频和照片)和“无所有文件”部分

javascript - 当我最小化浏览器窗口时,脚本停止。怎么修?

javascript - 如何使用 Google Apps 脚本获取上个月日期的正确格式

java - Android 应用程序中的穆斯林祈祷时间是如何计算的?

php - 我如何在我的其他 CodeIgniter Controller 中使用 __construct 函数