iT邦幫忙

1

JS-物件找值問題求解

  • 分享至 

  • xImage

各位大大好,小的在做專案時遇到一個狀況,想了挺久也查了挺久不知道怎麼解

我要弄一個讀既有系統的資料做分析的工具,
同時for不同的系統使用,然後資料格式竟然不一樣
例如像這樣

系統a的資料:

{
    "ip": "192.168.0.0",
    "home1": {
        "eqid": "OOOOO",
        "room1": {
            "item": "aaa"
        },
        "room2": {
            "item": "bbb"
        }
    },
    "home2": {
        "eqid": "XXXXX",
        "room1": {
            "item": "ccc"
        },
        "room2": {
            "item": "ddd"
        }
    }
}

系統b的資料:

{
    "ip": "192.168.0.0",
    "homes": {
        "1": {
            "eqid": "OOOOO",
            "rooms": {
                "1": {
                    "item":"aaa"
                },
                "2": {
                    "item":"bbb"
                }
            }
        },
        "2": {
            "eqid": "XXXXX",
            "rooms": {
                "1": {
                    "item":"ccc"
                },
                "2": {
                    "item":"ddd"
                }
            }
        }
    }
}

兩種資料存的key一樣,但格式就不同
我想把資料都拉出來自己重新整理成統一格式

所以想請問JS有沒有哪個函式可以做到
對一個物件內的所有層級做搜尋,有符合的key值就返回value
這種事情

或是除了改原始資料格式外,有甚麼其他辦法可解我的困境嗎
感謝各位大大

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

0
johncoc
iT邦新手 3 級 ‧ 2022-11-11 16:06:04
最佳解答

找到一篇可以搜尋所有層級的解法,供參考
How to search through multi layers nested objects by keys in js

雖然不完全解決,不過打開了思路~感謝大大分享

0

一般來說,我還是建議最好從原始格式就改良。
但如果沒辦法的話。(如多方來源)

那你也只能寫格式轉換處理了。
你這如果沒有統一規則的話。
我還是會建議您直接跑迴圈判斷處理會比較好。

或是善用 Object.keys 及 Object.values 這兩組特性。
再搭配 map 來處理。

畢竟我不清楚你的規則,沒辦法直接寫給你。只能給你建議的方式。

我也想改來源資料,但既有的系統有點難動/images/emoticon/emoticon02.gif

我原本也是嘗試用 Object.keys 及 Object.values 這倆貨搭配 map 處理,但我發現來源資料不只兩種沒法確定到底資料層級會有多少可能性

所以才想找找看有沒有可以搜尋所有層級的解法,樓上大大分享的有打開思路,專案也有進展了~感謝大大分享

我要發表回答

立即登入回答