【问题标题】:How to clear JSON object using JavaScript or jQuery如何使用 JavaScript 或 jQuery 清除 JSON 对象
【发布时间】:2013-07-12 21:19:35
【问题描述】:

我有一个 JSON 对象,如下所示。发送 ajax 调用后,我想清除它。我该怎么办?

var cfamFwdDtls = {
    cndtwizid: [],
    clientIdsInstnIds: [],
    positioncd: '',
    positionCnt: '',
    rcrtrInstnId: '',
    positionLocation: {
        cntryIdFrCndt: '',
        stateIdFrCndt: '',
        zipIdFrCndt: '',
        cityIdFrCndt: ''
    },
    searchPstnSkill: []
};

【问题讨论】:

标签: javascript jquery json


【解决方案1】:

如果要重置整个对象,只需将变量重置回{}

cfamFwdDtls = {}; 
// or
cfamFwdDtls = new Object; 
// will prevent garbage collection
delete cfamFwdDtls;

但是,如果您想要一种更细粒度的“重置”对象的方式,则需要定义具体的重置要求。无论如何,您始终可以遍历对象并制作必要的对象。

for (var key in cfamFwdDtls) {
    if (typeof cfamFwdDtls[key] == "string") {
        cfamFwdDtls[key] = '';
    } else if (Array.isArray(cfamFwdDtls[key])) {
        cfamFwdDtls[key] = [];
    } else {
        delete cfamFwdDtls[key];
    }
}

上述定义可能是定义您的特定情况的一种可能方式,因为我只在您的对象中看到字符串和数组。如果密钥不是这两个,它只会删除密钥。这可以根据您的需要进行定制。

【讨论】:

  • 你应该在 Stack Overflow 上争取参考质量的写作,而不是非正式的论坛帖子......
  • @Shawn31313 它对我不起作用。如果我使用 cfamFwdDtls = {};下次我将失去所有领域
  • 漫漫长路不只是为了好玩。在对象或对象的一部分被多个 var 引用的特殊情况下,多个 var 之间的一致性可能需要很长的路要走。
  • “只是为了好玩”部分帮助我找到了一种仅根据键名删除某些对的方法。
  • -1。使用“漫长的道路”是有正当理由的。我同意在这种特殊情况下看起来很愚蠢,但是您的答案需要改进以更好地解释情况,而不是笼统地声明“永远不要这样做”。
【解决方案2】:

for (var entry in cfamFwdDtls) delete cfamFwdDtls[entry];

如果你只是简单地重新分配给{},如果你的对象有多个引用,你就会遇到麻烦。也可能面临垃圾收集问题。

【讨论】:

    【解决方案3】:

    如果你想删除对象,还有其他选择。类似这样的东西

    delete cfamFwdDtls;
    

    你可以使用 delete 关键字来删除一个对象。

    更多详情read

    example

    【讨论】:

    • 这似乎不起作用。它仅在删除单个键值对时有效。
    • @Shawn31313 我的回答清楚地表明,如果要删除对象,不仅要删除其中的值。
    • 它将删除整个“cfamFwdDtls”对象
    【解决方案4】:

    问题

    当我遇到这个问题时,我想解决两个问题。

    1. 为复杂的结构定义提供一个位置。
    2. 确保整个定义已重置。

    解决方案

    基本思想是有一个函数返回空结构。如果它不在函数中,您可以更改结构本身而不是结构的实例。

    示例

    我个人使用它,但我也在类中包含 API 函数并使其成为 HTTP 服务。

    class complexStructure {
      constructor () {
        this.payload = resetPayload();
      }
      resetPayload () {
        this.payload = {
          cndtwizid: [],
          clientIdsInstnIds: [],
          //...
        };
      }
    }
    

    功能

    function resetStructure () {
      return {
        cndtwizid: [],
        clientIdsInstnIds: [],
        //...
      };
    }
    
    let resetStructure = resetStructure()
    

    【讨论】:

      【解决方案5】:
      function getJson(){
         return {
                  cndtwizid: [],
                  clientIdsInstnIds: [],
                  positioncd: '',
                  positionCnt: '',
                  rcrtrInstnId: '',
                  positionLocation: {
                      cntryIdFrCndt: '',
                      stateIdFrCndt: '',
                      zipIdFrCndt: '',
                      cityIdFrCndt: ''
                  },
                  searchPstnSkill: []
               };
      }
      
      var data = getJson();
      data.positioncd = 'xyz';
      data.rcrtrInstnId = 'abc';
      
      $.ajax(...){
      }
      success(response){
         data = getJson(); //re-initialize structure
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-07-08
        • 1970-01-01
        • 2019-07-11
        • 2012-04-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多