8

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

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

5 回答 5

11

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

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];
    }
}

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

于 2013-07-15T04:52:52.933 回答
3

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

如果您只是重新分配给{},那么如果您的对象有多个引用,您将遇到麻烦。也可能面临垃圾收集问题。

于 2016-05-14T23:27:37.913 回答
1

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

delete cfamFwdDtls;

您可以使用 delete 关键字来删除对象。

阅读更多详情

例子

于 2013-07-15T05:07:32.513 回答
0
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
}
于 2021-11-19T13:20:46.080 回答
0

问题

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

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

解决方案

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

例子

班级

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

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

功能

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

let resetStructure = resetStructure()
于 2021-05-10T17:58:40.413 回答