【问题标题】:How to delete item in JSON file如何删除 JSON 文件中的项目
【发布时间】:2016-12-11 06:29:17
【问题描述】:

您好,我试图删除 JSON 文件中的一个对象,但它不起作用。我将值 p 设置为等于包括值名称、日期和数字在内的整个项目。当我使用 delete 来从 json 文件中删除特定项目时,它不会被删除。我想知道你们中是否有人知道为什么。谢谢。

这是nodejs代码

app.get('/testtwilio3', function(req,res,next){

        var fs = require('fs');
      var configFile = fs.readFileSync('./Public/patients.json');
      var config = JSON.parse(configFile);
        var p = {name: req.query.name, date: req.query.date, number: req.query.number};
        var key = p;
        console.log(p);
        delete config[key];
        console.log( config);
    });

这是来自控制器的代码

 $scope.deleteName = function($index){

  var patient = {
            name: $scope.patients[$index].name,
            date: $scope.patients[$index].date,
            number:$scope.patients[$index].number
        }
 $http.get('/testtwilio3', {params: {name: patient.name, number: patient.number, date: patient.date}}) // PASS THE DATA AS THE SECOND PARAMETER
    .success(
        function(success){
          alert("work");
            console.log(success)
        })
    .error(
        function(error){

            console.log("error" + error)
        });


   }

这是json文件

[{"name":"John","date":"12/22/2016","number":"781314454"},{"name":"Joe","date":"09/15/2016","number":"7892834640"},{"name":"Mike","date":"08/25/2016","number":"6472329224"},{"name":"Mark","date":"08/06/2016","number":"7819231279"}]

这是控制台显示的内容。第一行是我要删除的内容,下面的行是项目数组。

{ name: 'Mark', date: '08/06/2016', number: '7819231279' }

[ { name: 'John', date: '12/22/2016', number: '781314454' },
  { name: 'Nikhilesh Singh',
    date: '09/15/2016',
    number: '7892834640' },
  { name: 'Mike', date: '08/25/2016', number: '6472329224' },
  { name: 'Mark', date: '08/06/2016', number: '7819231279' } ]

这就是我希望它成为第一行中的项目已从项目列表中删除的位置

{ name: 'Mark', date: '08/06/2016', number: '7819231279' }

[ { name: 'John', date: '12/22/2016', number: '781314454' },
  { name: 'Nikhilesh Singh',
    date: '09/15/2016',
    number: '7892834640' },
  { name: 'Mike', date: '08/25/2016', number: '6472329224' } ]

【问题讨论】:

    标签: json node.js


    【解决方案1】:

    您只能删除带有delete 的单个属性(例如delete <attrName>)。如果你想删除多个属性,你可以使用 lodash 的omit 例如。

    希望这会有所帮助。

    【讨论】:

      【解决方案2】:

      [编辑]

      delete 运算符仅用于从 对象 中删除属性。您的config 变量包含一个数组 对象,因此delete 根本不会做您想做的事情。

      您需要遍历config 数组并使用splice 之类的东西来删除与请求中具有相同namedatenumber 值的数组项。

      This related question 可能会有所帮助。

      【讨论】:

      • 请在您的问题中提供:./Public/patients.json 的内容、您在控制台日志中实际返回的内容以及您期望的结果。没有这些信息,我不得不做出很多猜测。至于你想做什么。
      猜你喜欢
      • 2020-09-05
      • 1970-01-01
      • 2020-03-08
      • 2019-01-11
      • 1970-01-01
      • 2017-11-13
      • 2014-08-03
      • 2022-01-15
      • 2023-02-23
      相关资源
      最近更新 更多