найти и изменить свойства со значением undefined - PullRequest
1 голос
/ 24 ноября 2011

У меня есть вложенный объект JavaScript, называемый данными. Есть ли способ перебрать его и найти все свойства, которые имеют значение undefined и установить его в строку «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 в кодовых значениях undefined. Который не проверяет (попробуйте http://jsonlint.com/).

Ответы [ 3 ]

0 голосов
/ 24 ноября 2011

Очень грубый поиск, но работает,

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 также проверяет полученный результат как «Хороший JSON»

0 голосов
/ 24 ноября 2011
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];

0 голосов
/ 24 ноября 2011

Если это ваша структура данных (вложенные объекты):

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';
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...