Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 查找并更改值未定义的属性_Javascript_Jquery_Object - Fatal编程技术网

Javascript 查找并更改值未定义的属性

Javascript 查找并更改值未定义的属性,javascript,jquery,object,Javascript,Jquery,Object,我有一个名为data的嵌套javascript对象。是否有任何方法可以遍历它,找到所有具有未定义值的属性,并将其设置为字符串“未定义”。如果属性值在IE7中未定义,JSON不会验证。谢谢 { "Target": "System", "Systemoperation": "Buy-In", "Systemorigin": "ABB", "Subscriptionmode": "Maintain & Evolve", "Evolveto": "800xA", "Quoteselection"

我有一个名为data的嵌套javascript对象。是否有任何方法可以遍历它,找到所有具有未定义值的属性,并将其设置为字符串“未定义”。如果属性值在IE7中未定义,JSON不会验证。谢谢

{
"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": ""
}


这里是未定义codevalues中的evolteto。如果这是您的数据结构(嵌套objs),则不会验证(尝试)。

那么,这对你有用

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

一个非常粗糙的搜索,但有效

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";
        }
    }
}
-JSON验证器还将此处获得的结果作为“良好的JSON”进行验证

然后用你的名字来称呼它


disp[数据]

请为我们创建一个示例:@Johan我的代码适用于您的情况。没有比检查每个级别更有效的方法了吗?当我记录数据对象时,返回的所有内容现在都是未定义检查。第3行缺少先前的结束括号。是的,检查一把小提琴,但是如果我键入
console.log(disp(data))
我得到的只是
undefined
我不应该看到“新”数据对象吗?哦,好的。如果您键入console.log(disp(data)),您将尝试查找有关函数的信息。如果是这种情况,你应该输入console.log(disp)。但是,如果要查看数据对象,则必须键入console.log(data)。同样,要使其工作,必须在可以从控制台访问的某个范围内定义数据。特别要明确的是,我在document.write部分添加了类型,这样您就可以相信它实际上是字符串。我希望你能在某处使用JSON。那应该能解决你的问题。至于查看它,我真的不知道什么是最好的方法。请放心,未定义的类型现在是这个JS之后的字符串。无论你想在哪里使用它,这应该能解决问题
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";
        }
    }
}
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