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