我有一個多維陣列,每個物件都有相同的鍵。
export const MENUS = [
{
"type": "main",
"submenu": [],
"path": "/a"
},
{
"type": "main",
"submenu": [
{
"type": "submenu",
"submenu": [
{
"type": "submenu",
"submenu": [],
"path": "/b/4"
},
],
"path": null
},
{
"type": "submenu",
"submenu": [],
"path": "/b/1"
}
],
"path": null
},
{
"type": "main",
"submenu": [],
"path": "/c"
}
]
現在,我有一個鍵和值(路徑:'/b/1'),我想通過陣列中的鍵/值獲取父物件。
這就是我使用 { path: '/b/1' } 時要尋找的結果。
{
"type": "main",
"submenu": [
{
"type": "submenu",
"submenu": [
{
"type": "submenu",
"submenu": [],
"path": "/b/4"
},
],
"path": null
},
{
"type": "submenu",
"submenu": [],
"path": "/b/1"
}
],
"path": null
},
如果我使用 {path: '/c'},那么結果將是一個根陣列。(等于MENU)如果有人有好的解決方案,請告訴我。謝謝。
uj5u.com熱心網友回復:
function getObj(array, key, value) {
return array.find(item => isThisItem(item))
function isThisItem(current) {
const entries = Object.entries(current)
for (const [k, v] of entries) {
if (k === key && v === value) return true
if (Array.isArray(v)) {
for (const f of v) {
if (isThisItem(f)) return true
}
}
if (typeof v === 'object' && v !== null) {
if (isThisItem(v)) return true
}
}
}
}
// usage
const obj = getObj(MENUS, 'path', '/b/1')
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/460083.html
標籤:javascript 数组 目的 多维数组
