zoukankan      html  css  js  c++  java
  • 【基础篇】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,"","	");		//因为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对本地文件增删改查--查

      

    【参考资料】

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

  • 相关阅读:
    unity配置Android SDK,并构建导出apk格式
    eclipse安装Android插件
    jQuery常用事件详解
    jQuery的DOM操作小案例
    jQuery的DOM操作详解
    jQuery九类选择器详解
    jQuery简单入门
    JS表单前台校验模板
    SSH框架整合(全注解)
    SSH框架整合(XML)
  • 原文地址:https://www.cnblogs.com/blogNGNL/p/14104784.html
Copyright © 2011-2022 走看看