[英]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.