React.jsコンポーネントであるfixed-data-table
を使用して、データをテーブルに取り込みます。しかし、この段階でそれほど重要ではありません。try/catch(err)を使用せずに 'null'を返すindexOfはどのように扱うのですか?
テーブルには、問題の原因となる検索ボックスがあります。
まず、コードの興味深い部分を示します。
for (var index = 0; index < size; index++) {
if (!filterBy || filterBy == undefined) {
filteredIndexes.push(index);
}
else {
var backendInfo = this._dataList[index];
var userListMap = hostInfo.userList;
var userListArr = Object.values(userListMap);
function checkUsers(){
for (var key in userListArr) {
if (userListArr.hasOwnProperty(key) && userListArr[key].text.toLowerCase().indexOf(filterBy) !== -1) {
return true;
}
}
return false;
}
if (backendInfo.firstName.indexOf(filterBy) !== -1 || backendInfo.lastName.toLowerCase().indexOf(filterBy) !== -1 || backendInfo.countryOrigin.toLowerCase().indexOf(filterBy) !== -1
|| backendInfo.userListMap.indexOf(filterBy) !== -1) {
filteredIndexes.push(index);
}
}
}
これは、レンダリングされ、あなたの入力テーブルで何か、そして列は、ユーザ入力からnull
を返した場合、最後の部分は、エラーを投げています。
事はのtry/catchで
try {
if (backendInfo.firstName.indexOf(filterBy) !== -1 || backendInfo.lastName.toLowerCase().indexOf(filterBy) !== -1 || backendInfo.countryOrigin.toLowerCase().indexOf(filterBy) !== -1
|| backendInfo.userListMap.indexOf(filterBy) !== -1) {
filteredIndexes.push(index);
}
}
catch(err) {
console.log('Exception')
}
は、それが意図したとおりに、100%の作品とのindexOfはnullを返すハンドル..私は最後の部分を変更した場合、私は、コードを動作させることができ、..ですしかし、これは適切に処理する方法ではありません - 私は、この種の例外処理はまれな例外であると想定されています。実際にはフロントエンドでバックエンド。
上記のJavascriptコードでnullを返すindexOfはどのように処理しますか?取り込まれているいずれかのソース列にはnullが返されることがあります。
のindexOfは 'eighter返す必要があります-1'または任意のインデックス、nullにはなりません。エラーをスローすると、nullを返すためではありません。サンプルデータを使ってスニペットでこの作業を行うことはできますか? – Randy
'indexOf'は配列上で実行されたときに' null'を返すことはありません。前の変数の一つ( 'backendInfo'かそのプロパティの一つ)が犯人でなければなりません。あなたが得る正確なエラーテキストは何ですか? – gyre
申し訳ありません。私は自分自身を貧弱に言いました。入力データに値がnullのキーが含まれている可能性があります。それが私の言いたいことです。 "Uncaught TypeError:ヌルのプロパティ 'indexOf'を読み取ることができません。 – cbll