2017-08-29 53 views
1

我有嵌套對象,如下所示,如何使用值獲取子對象鍵?

{ 
    "Types": { 
    "TEST": { 
     "name": "EC", 
     "alloweMultipls": "true" 
    }, 
    "TEST1": { 
     "name": "ED", 
     "alloweMultipls": "true" 
    } 
    } 
} 

我如何能retrive allowMyltipls如果我只有關鍵"EC"沒有任何其他價值。

回答

3

試試這種方法。您可以獲取fileTypes對象的所有屬性,然後使用.filter函數對它們進行迭代,並找到name與您的key相同的屬性。然後用該鍵檢索嵌套對象。

const object = { 
 
    "fileTypes": { 
 
    "TEST": { 
 
     "name": "EC", 
 
     "alloweMultipls": "true" 
 
    }, 
 
    "TEST1": { 
 
     "name": "ED", 
 
     "alloweMultipls": "true" 
 
    } 
 
    } 
 
}; 
 

 
const key = 'EC'; 
 
const fileTypes = object.fileTypes; 
 

 
const property= Object.keys(fileTypes).filter(item => fileTypes[item].name === key); 
 

 
console.log(fileTypes[property]);

0

遍歷你的對象並檢查「名稱」屬性,如果匹配到你想要的,然後得到充分的對象。簡單優雅的解決方案。

var data = { 
 
    "Types": { 
 
    "TEST": { 
 
     "name": "EC", 
 
     "alloweMultipls": "true" 
 
    }, 
 
    "TEST1": { 
 
     "name": "ED", 
 
     "alloweMultipls": "true" 
 
    } 
 
    } 
 
}; 
 

 
for(d in data.Types){ 
 
    if(data.Types[d].name=='EC'){ 
 
     console.log(data.Types[d]); 
 
    } 
 
}

0

Ataur拉赫曼,

var data = { "Types": { 
"TEST": { 
    "name": "EC", 
    "alloweMultipls": "true" 
}, 
"TEST1": { 
    "name": "ED", 
    "alloweMultipls": "true" 
} }} 


var allMultiplesInEC = []; 


for(var i=0;i<data.Types.length-1;++i){ if(data.Types[i].name =='EC'{ 

allMultiplesInEC.push(data.Types[i].alloweMultipls);} 
} 

console.log(allMultiplesInEC);