Javascript 删除数据数组JS

Javascript 删除数据数组JS,javascript,json,node.js,Javascript,Json,Node.js,我正在创建一个可以从JSON文件读取数据的文件 我可以向文件中添加新名称,但无法删除。当我输入要删除的名称时,它实际上会将该名称添加到文件中 为什么要添加&而不是删除?目标是能够从将生成的列表中删除特定名称 提前谢谢你!下面是我的代码,其中包含对我尝试执行的操作的注释 // POST request to add to JSON & XML files router.post('/post/json', function(req, res) { // Function to r

我正在创建一个可以从JSON文件读取数据的文件

我可以向文件中添加新名称,但无法删除。当我输入要删除的名称时,它实际上会将该名称添加到文件中

为什么要添加&而不是删除?目标是能够从将生成的列表中删除特定名称

提前谢谢你!下面是我的代码,其中包含对我尝试执行的操作的注释

// POST request to add to JSON & XML files
router.post('/post/json', function(req, res) {

    // Function to read in a JSON file, add to it & convert to XML
    function appendJSON(obj) {

        // Read in a JSON file
        var JSONfile = fs.readFileSync('Staff.json', 'utf8');

        // Parse the JSON file in order to be able to edit it 
        var JSONparsed = JSON.parse(JSONfile);

        // Add a new record into country array within the JSON file    
        JSONparsed.member.push(obj);

        // Beautify the resulting JSON file
        var JSONformated = JSON.stringify(JSONparsed, null, 4);

        // Delte a specific entry from JSON file
        var i = member.indexOf(" ");
        if (i != -1) {
            member.splice(i,1);
        }

        // Write the updated JSON file back to the system 
        fs.writeFileSync('Staff.json', JSONformated);

        // Convert the updated JSON file to XML     
        var XMLformated = js2xmlparser.parse('staff', JSON.parse(JSONformated));

        // Write the resulting XML back to the system
        fs.writeFileSync('Staff.xml', XMLformated);
    }

    // Call appendJSON function and pass in body of the current POST request
    appendJSON(req.body);

    // Re-direct the browser back to the page, where the POST request came from
    res.redirect('back');
});
下面是
JSON
文件的一个示例

{ 
    "member": [ 
        { 
            "Full_Name": "", 
            "Address": "", 
            "Gender": "",     
            "Phone_Number": "" 
        }
    ]
}
函数从数组中删除该项并返回已删除的项。因此,如果您想通过属性从
JSON
Full_Name
中删除一个项目,您必须首先找到该项目的索引

var nameToSearch = "MyName";
var itemIndex = -1;
for(var i = 0; i < JSONparsed.member.length; i++) {
    if(JSONparsed.member[i].Full_Name === nameToSearch) {
        itemIndex = i;
    }
}
您最可能遇到的问题是
itemIndex
始终为-1,因为
indexOf
不知道要检查哪个属性,只检查整个对象

此外,以下行必须位于上述代码之后。(因此在对
json
进行任何更改之后)


我还推荐阅读有关javascript调试的内容。它让你的生活更容易发现错误。

我是使用上面的方法还是使用删除方法更好?我的错,我总是把
拼接
切片
弄糊涂。原来
splice
确实就地修改:)splice方法返回“一个包含已删除元素的数组”。@baao ups my error。我改变了主意answer@Dr.Fre谢谢大家,但出于某种原因,它仍然在将信息添加到文件的末尾,而不是删除它。我不知道我做错了什么
if (itemIndex != -1) {
    JSONparsed.member.splice(itemIndex,1);
}
// Beautify the resulting JSON file
var JSONformated = JSON.stringify(JSONparsed, null, 4);