2017-07-17 61 views
0

我有點新反應原生(和一般的JavaScript)。在按下按鈕時,我想要搜索某個鍵(在本例中爲電影)的json api。檢查json是否包含反應本機中的密鑰

例如,繼承人的API https://facebook.github.io/react-native/movies.json

現在在按下按鈕,我要檢查,如果API包含了一個名爲「黑客帝國」的電影。

的網絡教程指出,以獲取JSON,你需要下面的方法:

function getMoviesFromApiAsync() { 
return fetch('https://facebook.github.io/react-native/movies.json') 
    .then((response) => response.json()) 
    .then((responseJson) => { 
    return responseJson.movies; 
    }) 
    .catch((error) => { 
    console.error(error); 
    }); 

}

這將返回一個JSON對象,但如何將一個查詢這個對象來檢查它是否包含例如名爲「The Matrix」的電影?

任何幫助將不勝感激。

回答

1

你會做什麼是JSON響應使用Array.prototype.find()電影陣列和檢查值

function getMoviesFromApiAsync() { 

    return fetch('https://facebook.github.io/react-native/movies.json') 
     .then((response) => response.json()) 
     .then((responseJson) => { 
     return responseJson.movies; 
     }) 
     .catch((error) => { 
     console.error(error); 
     }); 
    } 

    //from where you are calling getMovies 
    getMoviesFromApiAsync() 
     .then(response => { 
       var data = response.find((movie) => 
        movie.title.toUpperCase().indexOf('THE MATRIX') > -1 
      ) 
       console.log(data) 
       if(data) { 
        console.log('found'); 
       } 
     }) 

其他選項使用

Array.prototype.some()

var data = response.some((movie) => movie.title.toUpperCase().indexOf('THE MATRIX') > -1) 

Array.prototype.filter()

var data = response.filter((movie) => movie.title.toUpperCase().indexOf('THE MATRIX') > -1) 
+0

不應該檢查indexOf'> -1'嗎? – RRikesh

+0

@RRikesh,謝謝你指出,剛剛更新了答案 –

+0

@ShubhamKhatri酷,非常感謝,它的作品:)。還有一個問題。當我單擊按鈕時,如何顯示顯示json對象名稱的警報,而不是記錄到控制檯?警報在該方法中似乎不起作用。 – Razor88