代码之家  ›  专栏  ›  技术社区  ›  Maryam Ghafarinia

使用NODEJS从JSON中删除元素

  •  1
  • Maryam Ghafarinia  · 技术社区  · 7 年前

    我有一个json文件,我正试图用下面的代码删除一个元素。

     exports.delete = function(req, res) {
          var deletearticle = articles[req.params.id];
          delete articles[req.params.id];
          fs.writeFile('server/articles.json',JSON.stringify(articles, null, 4),finished);
              function finished(err){
                     console.log("--->After deletion, article list:\n" + JSON.stringify(articles, null, 4) );
                                    }
         res.end(JSON.stringify(deletearticle, null, 4));
    };
    

    删除元素后,我的json文件如下:

    [
        {
            "header": "Jack",
            "body": "Davis",
            "date": "",
            "id": 0
        },
        null,
        {
            "header": "dfd",
            "body": "dgfgfgfgfdgfg",
            "date": "2018-11-24T16:33:48.842Z",
            "id": 2
        }]
    

    我在客户端得到一个错误:

      {articles ? articles.map(({ id, header ,body}) => (
              <div key={id} timeout={500} className="fade">
               <div className="article">
                          <h2 className="article_title">{header}</h2>
    

    4 回复  |  直到 7 年前
        1
  •  1
  •   Just code    7 年前

    array.splice 要从数组中删除对象,因为您有对象的id,所以首先需要找到要删除的对象的索引,然后可以使用splice轻松地删除它。

    avoid using delete

    var sampleArray= [{
        "header": "Jack",
        "body": "Davis",
        "date": "",
        "id": 5
      },
      {
        "header": "Jack",
        "body": "Davis",
        "date": "",
        "id": 6
      },
      
      {
        "header": "dfd",
        "body": "dgfgfgfgfdgfg",
        "date": "2018-11-24T16:33:48.842Z",
        "id": 7
      }
    ];
    
    var id = 5;
    
    var index = sampleArray.findIndex(a=> a.id === id);
    if (index > -1) {
      sampleArray.splice(index, 1);
    }
    
    console.log(sampleArray);
        2
  •  2
  •   Naveen Ramawat    7 年前

    只需过滤您的对象,假设这里有一个JSON数组,您必须过滤所有不包含null的对象

    a = a.filter(function(obj){ if(obj != null) return obj })
    

    现在打印一个,它将过滤掉除空对象以外的所有对象

        3
  •  1
  •   dilusha_dasanayaka    7 年前

     array.splice(index, 1);
    

    var array = [
        {
            "header": "Jack",
            "body": "Davis",
            "date": "",
            "id": 0
        },
        null,
        {
            "header": "dfd",
            "body": "dgfgfgfgfdgfg",
            "date": "2018-11-24T16:33:48.842Z",
            "id": 2
        }];
    
    // filter array
    
    var filtered = array.filter(function (el) {
      return el != null;
    });
    
        4
  •  1
  •   Vaibhav    7 年前
        var a = [
            {
                "header": "Jack",
                "body": "Davis",
                "date": "",
                "id": 0
            },
            null,
            {
                "header": "dfd",
                "body": "dgfgfgfgfdgfg",
                "date": "2018-11-24T16:33:48.842Z",
                "id": 2
            }];
    
       //using es6 array.filter to filter null or undefined or empty object
    
        var filtered = array.filter((x)=>{ 
          for (var key in filter) {
            if (x[key] === undefined || x[key] !== null || x[key]!=='')
              return false;
         }
         return true;
       });