【基础篇】js对本地文件增删改查--删


前置条件:

1. 本地有安装node,点击传送门

项目目录:

 

 

 1. msg.json内容

{
    "data": [ { "id": 1, "name": "aa" }, { "id": 2, "name": "bb" }, { "id": 3, "name": "cc" }, { "id": 4, "name": "dd" } ], "total": 4 }

2. delete.js

// 若找不到该模块,则用npm i fs安装一下即可
var fs = require('fs');

//写入json文件选项
function deleteData(id){
    //现将json文件读出来
    fs.readFile('data/msg.json',function(err,data){
        if(err){
            return console.error(err);
        }
        var msg = data.toString();			//将二进制的数据转换为字符串
        msg = JSON.parse(msg);				//将字符串转换为json对象
		
		//找到对应的数据id进行删除
        for(var i = 0; i < msg.data.length;i++){
            if(id == msg.data[i].id){
                msg.data.splice(i,1);
            }
        }
		
        msg.total = msg.data.length;		//刷新一下总数,以后分页会用上
        console.log(msg);
        var str = JSON.stringify(msg,"","\t");		//因为nodejs的写入文件只认识字符串或者二进制数,因此进行必要的转换
        fs.writeFile('./data/msg.json',str,function(err){
            if(err){
                console.error(err);
            }
            console.log('----------删除成功-------------');
        })
    })
}

//执行新增数据方法;
deleteData(4)

3. 用node执行delete.js,效果如下图:

 

可以发现,数据已删除。有个问题,当数据有id相同时,删除会有bug。其实也比较好理解,假如有3个id为5的数据,当删除第一个id为5的数据时,后面的数据前移,此时,for循环i+1其实是定位到了第3个id等于5的数据。因此,解决思路就很清晰了。修改for循环部位,如下:

//找到对应的数据id进行删除
for (var i = 0; i < msg.data.length; i++) {
	if (id == msg.data[i].id) {
		msg.data.splice(i, 1);

		i = i - 1; //解决方案
	}
}

  

【基础篇】

js对本地文件增删改查--增

js对本地文件增删改查--删

js对本地文件增删改查--改

js对本地文件增删改查--查

  

 

【参考资料】

前人栽树后人乘凉,敬编程界的先行者!


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM