簡體   English   中英

如何在 JS 中循環遍歷復雜的 object

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM