我正在寫一個三元陳述句,列印出電影的認證(IE.PG,R ...)。
如果陣列的長度等于零并且未定義,我試圖回傳一條錯誤訊息,上面寫著“這部電影沒有可用的認證”。如果陣列等于零,我設法將錯誤訊息列印到控制臺,但是當它未定義時我正在努力列印錯誤訊息。我不斷進入TypeError: Cannot read properties of undefined (reading 'release_dates')控制臺。
這是我嘗試過的:
const movieRating = rating.results;
//Finding US ratings
const findUSRating = movieRating.find((item) => item.iso_3166_1 === 'US');
//Filtering US ratings to remove null certifications.
const array = findUSRating.release_dates.filter((item) => item.certification);
//Ternary statement & where I am stuck.
console.log(array.length > 0 || array[index] !== undefined ? array[0].certification : `No certification Available For This Movie`);
uj5u.com熱心網友回復:
問題出在這條線上
const array = findUSRating.release_dates.filter((item) => item.certification);
findUSRating 是未定義的,你不能做 findUSRating.release_dates
一個想法可以是使用另一個三元來測驗變數
const array = (findUSRating && findUSRating.release_dates) ? findUSRating.release_dates.filter((item) => item.certification) : [];
如果 movieRating 未定義或不是陣列,您也會遇到同樣的問題。您將不得不使用類似的方法來防止錯誤
const findUSRating = (movieRating && movieRating.length) ?movieRating.find((item) => item.iso_3166_1 === 'US') : [];
uj5u.com熱心網友回復:
TypeError:無法讀取未定義的屬性(讀取“release_dates”)
根據錯誤,findUSRating未定義。此錯誤的出現是因為movieRating不包含具有iso_3166_1as的物件US。
示例:
const movieRating = [{
iso_3166_1: 'Canada'
}, {
iso_3166_1: 'Australia'
}];
//Finding US ratings
const findUSRating = movieRating.find((item) => item.iso_3166_1 === 'US');
//Filtering US ratings to remove null certifications.
const array = findUSRating.release_dates.filter((item) => item.certification);
console.log(array);
要擺脫這種情況,您可以使用可選鏈接 (?.)運算子。
現場演示:
const movieRating = [{
iso_3166_1: 'US',
release_dates: [{
certification: 'A'
}]
}, {
iso_3166_1: 'Australia',
release_dates: [{
certification: 'B'
}]
}];
//Finding US ratings
const findUSRating = movieRating?.find((item) => item.iso_3166_1 === 'US');
//Filtering US ratings to remove null certifications.
const array = findUSRating?.release_dates.filter((item) => item.certification);
console.log(array?.length > 0 || array !== undefined ? array[0].certification : `No certification Available For This Movie`);
uj5u.com熱心網友回復:
您可以使用 try catch 在運行時捕獲任何錯誤。
try {
const movieRating = rating.results;
//Finding US ratings
const findUSRating = movieRating.find((item) => item.iso_3166_1 === 'US');
//Filtering US ratings to remove null certifications.
const array = findUSRating.release_dates.filter((item) => item.certification);
//Ternary statement & where I am stuck.
console.log(array.length > 0 || array[index] !== undefined ? array[0].certification : `No certification Available For This Movie`);
} catch(err)
{
console.log("Error")
}
uj5u.com熱心網友回復:
@特雷文。您可以更改以下代碼。
//Filtering US ratings to remove null certifications.
const array = findUSRating.release_dates.filter((item) => item.certification);
const array = findUSRating ? findUSRating.release_dates.filter((item) => item.certification) : [];
or
const array = findUSRating?.release_dates?.filter((item) => item.certification);
希望它可以幫助你。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/494014.html
標籤:javascript 数组 条件运算符
