node.js中, fs模块,利用内置属性操作修改元素内容的3中方法

412 阅读1分钟

node.js中, fs模块,利用内置属性操作修改元素内容的3中方法

//json格式的数组
[{"id":0,"color":"black","name":"家猪"},{"color":"red","name":"傻猪","id":1},{"color":"red","name":"豪猪","id":2},{"id":3,"color":"red","name":"烧猪"}]

// 方法1
//设置引入模块
const fs = require("fs")
//同步读取文件
let data = fs.readFileSync("./data/04.json", "utf-8")
//由于数组是个字符串格式,需要转换成数组
let list = JSON.parse(data)
function updataById(id, obj) {
//findIndex 返回数组中的一个索引
    const index = list.findIndex(item => item.id === id)
    //...是展开obj的内容  
    list[index] = { ...obj, id }
    //创建元素在源文件中  由于  fs.writeFileSync 显示的是字符串 所以需要转换字符串格式
    fs.writeFileSync("./data/04.json", JSON.stringify(list))
}
updataById(2, { color: "red", name: '豪猪' })




// 方法2
const fs = require("fs")
let data = fs.readFileSync("./data/04.json", "utf-8")
let list = JSON.parse(data)
function updataById(id, obj) {
    for (let i = 0; i < list.length; i++) {
        if (list[i].id === id) {
            list.splice(i, 1, { ...obj, id })
        }
    }
    fs.writeFileSync("./data/04.json", JSON.stringify(list))
}
updataById(1, { color: "red", name: '傻猪' })




// 方法3
const fs = require("fs")
const list = JSON.parse(fs.readFileSync("./data/04.json", "utf-8"))

function updataById(id, obj) {
    let value = list.find(item => {
        if (item.id === id) {
            return true
        }
    })
    value.name = obj.name
    value.color = obj.color
    fs.writeFileSync("./data/04.json", JSON.stringify(list))
}
updataById(3, { color: "red", name: '烧猪' })