2017-02-20 36 views
0

我該如何去循環瀏覽這個JSON對象以找到一個特定的「id」鍵,然後返回名稱「outer key」?對不起,我不太熟悉正確的名字。使用不同的鍵對Json進行迭代

ie,搜索id'24',並在Javascript中獲得'Jax'?

{ 
    "type":"champion", 
    "version":"7.2.1", 
    "data":{ 
    "Jax":{ 
     "id":24, 
     "key":"Jax", 
     "name":"Jax", 
     "title":"Grandmaster at Arms", 
     "tags":[ 
     "Fighter", 
     "Assassin" 
     ] 
    }, 
    "Sona":{ 
     "id":37, 
     "key":"Sona", 
     "name":"Sona", 
     "title":"Maven of the Strings", 
     "tags":[ 
     "Support", 
     "Mage" 
     ] 
    } 
    } 
} 
+0

注意,缺少關閉'}'。 – guest271314

+3

請注意,[沒有任何「JSON對象」](http://benalman.com/news/2010/03/theres-no-such-thing-as-a-json/)。 – nnnnnn

回答

1

您可以使用for..of循環,Object.entries()遍歷屬性名稱和對象的值;如果值id匹配24,則將變量設置爲該對象的屬性名稱; break循環或從if聲明中返回屬性。

function getData(json, _id) { 
    let prop = `${_id} not found`; 
    for (let [key, value] of Object.entries(json)) { 
    let {id} = value; 
    if (id && id === _id) { 
     return key 
    } 
    } 
    return prop; 
} 

let res = getData(json.data, 24); 
+1

爲什麼在返回之前等待所有循環迭代完成? – Phil

+0

@菲爾好點。將在if語句中包含'break'。 – guest271314

+1

或只是'返回鍵' – Phil