【基礎篇】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