Javascript 删除数据数组JS
我正在创建一个可以从JSON文件读取数据的文件 我可以向文件中添加新名称,但无法删除。当我输入要删除的名称时,它实际上会将该名称添加到文件中 为什么要添加&而不是删除?目标是能够从将生成的列表中删除特定名称 提前谢谢你!下面是我的代码,其中包含对我尝试执行的操作的注释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
// 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);