[英]How to loop through a complex object in JS
这是我的 obj,我只想遍历它并显示错误:
var obj = {
"error": {
"errors": {
"username": {
"properties": {
"message": "username field is empty.",
"type": "required",
"path": "username"
},
"kind": "required",
"path": "username"
},
"email": {
"properties": {
"message": "email field is empty.",
"type": "required",
"path": "email"
},
"kind": "required",
"path": "email"
},
"password": {
"properties": {
"message": "password field is empty.",
"type": "required",
"path": "password"
},
"kind": "required",
"path": "password"
}
},
"_message": "User validation failed",
"message": "User validation failed: username: username field is empty., email: email field is empty., password: password field is empty."
}
}
我想显示错误: properties.message
但我很难过,这是我迄今为止尝试过的:
for (var key in obj.error.errors) {
for (var key2 in key.properties){
for (var key3 in key2.message){
console.log(key3)
}
}
}
但是控制台是空白的。
在循环中,您得到的是密钥,而不是 object 本身。 此外,如果您的数据是这样的结构,您也不需要添加所有这些循环。 只需选择错误,遍历所有错误。
for(var d in obj.error.errors){
console.log(a[d].properties.message)
}
一个可行的解决方案
Object.values(obj.error.errors).forEach((error) => { console.log(error.properties.message) })
查看您的数据结构,您只需要迭代“错误”列表
检查一下,它将以properties:message
格式返回您
const obj = { "error": { "errors": { "username": { "properties": { "message": "username field is empty.", "type": "required", "path": "username" }, "kind": "required", "path": "username" }, "email": { "properties": { "message": "email field is empty.", "type": "required", "path": "email" }, "kind": "required", "path": "email" }, "password": { "properties": { "message": "password field is empty.", "type": "required", "path": "password" }, "kind": "required", "path": "password" } }, "_message": "User validation failed", "message": "User validation failed: username: username field is empty., email: email field is empty., password: password field is empty." } }; const objVal = Object.values(obj.error.errors); const errors = objVal.reduce((obj, item) => { return (obj[item.path] = item.properties.message, obj) },{}) console.log(errors);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.