查找并更改值为undefined的属性

时间:2011-11-24 10:40:08

标签: javascript jquery object

我有一个名为data的嵌套javascript对象。有没有办法迭代它并找到所有具有未定义值的属性并将其设置为字符串,“undefined”insted。 JSON不验证IE7中的属性值是否未定义。感谢

{
"Target": "System",
"Systemoperation": "Buy-In",
"Systemorigin": "ABB",
"Subscriptionmode": "Maintain & Evolve",
"Evolveto": "800xA",
"Quoteselection": "Full Quote",
"Commitmenttimeframe": "3 years",
"codevalues": {
    "Target": 100,
    "Systemoperation": 110,
    "Systemorigin": false,
    "Subscriptionmode": 4,
    "Evolveto": undefined,
    "Quoteselection": "fullquote",
    "Commitmenttimeframe": 3
},
"Route": [
    "System",
    "Buy-In",
    "ABB",
    "Maintain & Evolve",
    "800xA",
    "Full Quote",
    "3 years"
],
"currentsystem": ""

}

这是代码值未定义的evolteto。哪个不验证(尝试http://jsonlint.com/)。

3 个答案:

答案 0 :(得分:0)

如果这是您的数据结构(嵌套objs):

data = {
  a: undefined,
  b:{
    c: '1',
    d: undefined
  }
}

然后,这对你有用

for (var items in data) {

  if (data[items] === undefined) {
    data[items] = 'undefined';
    continue;
  }
  for (var i in data[items]) {
    if (data[items][i] === undefined) {
      data[items][i] = 'undefined';
    }
  }
}

答案 1 :(得分:0)

非常粗略的搜索,但有效,

for(var prop in arr)
{
    if(typeof arr[prop] === 'object')
    {
        for(var subprop in arr[prop])
        {
            if(typeof arr[prop][subprop] === 'undefined')
                arr[prop][subprop] = "undefined";
        }
    }
}

http://jsfiddle.net/h27dp/1/ - JSON验证器还将此处获得的结果验证为“Good JSON”

答案 2 :(得分:0)

function disp(j) {
  for(var key in j) {
    if(j.hasOwnProperty(key)) {
      if(typeof j[key] === "object") {
        disp(j[key]);
      }
      else {
        if ( j[key] === undefined) {
          j[key] = "undefined";
        } // if undefined key
      } // else
    } // if hasOwnProperty
  } // for  
} // function

然后用

调用它

disp[data];