[英]Can't figure out how to return the correct array
我有一個問題,我很難找到最佳方法。 在這里,我希望能夠快速找到可用的露營地。 我正在嘗試返回一個包含所有當前未保留的露營地編號的數組。 我以為我已經弄清楚了所有代碼,直到我看到我的代碼似乎返回的是字符串而不是值。
function availableCampsites(campgrounds){
let result = [];
for (i = 0; i < campgrounds.length; i++){
if (campgrounds[i].isReserved = false){//If the campground is available
} result = result + campgrounds[i].number
}
return result;
}
這是露營地的 object。 我正在嘗試從所有未保留的露營地返回數字變量。 這是我試圖返回的一個例子。 [1,5,12,18,23]
let campgrounds = [
{ number: 1, view: 'ocean', partySize: 8, isReserved: false },
{ number: 5, view: 'ocean', partySize: 4, isReserved: false },
{ number: 12, view: 'ocean', partySize: 4, isReserved: true },
{ number: 18, view: 'forest', partySize: 4, isReserved: false },
{ number: 23, view: 'forest', partySize: 4, isReserved: true }
]
現在,您正在使用以下行將值 'isReserved' 設置為 false:
if (campgrounds[i].isReserved = false){//If the campground is available
= 是一個集合,== 是一個測試。 嘗試這個:
if (campgrounds[i].isReserved == false){//If the campground is available
result = result + campgrounds[i].number
應該在IF STATEMENT
內
此外,使用 == 代替 =
function availableCampsites(campgrounds){
let result = [];
for (i = 0; i < campgrounds.length; i++){
if (campgrounds[i].isReserved = false){//If the campground is available
result = result + campgrounds[i].number
}
}
return result;
}
您需要使用比較運算符 (==) 而不是賦值運算符 (=) 來評估條件,然后將該值推送到結果數組中。
let campgrounds = [ { number: 1, view: 'ocean', partySize: 8, isReserved: false }, { number: 5, view: 'ocean', partySize: 4, isReserved: false }, { number: 12, view: 'ocean', partySize: 4, isReserved: true }, { number: 18, view: 'forest', partySize: 4, isReserved: false }, { number: 23, view: 'forest', partySize: 4, isReserved: true } ] function availableCampsites(campgrounds){ let result = []; for (i = 0; i < campgrounds.length; i++){ if (campgrounds[i].isReserved == false){//If the campground is available result.push(campgrounds[i].number); } } return result; } console.log(availableCampsites(campgrounds))
result = result + campgrounds[i].number
這不是向數組添加值的正確方法。 改用這個:
result.push(campgrounds[i].number)
您還使用=
運算符,它是一個賦值運算符,而不是比較運算符。
所以你的最終代碼變成:
function availableCampsites(campgrounds){
let result = [];
for (i = 0; i < campgrounds.length; i++){
if (campgrounds[i].isReserved == false){//If the campground is available
} result.push(campgrounds[i].number);
}
return result;
}
你可以像這樣更干凈地做到這一點:
function availableCampsites(campgrounds){
return campgrounds.filter(c => c.isReserved === false)
.map(c => c.number);
}
它首先將數組過濾為您想要的數組,然后將過濾后的結果映射到其number
屬性的新數組。
我在這里看到的三個問題:
你沒有檢查你認為你的狀況 - 事實上,你沒有檢查任何東西: if (campgrounds[i].isReserved = false)
此行將 camgrounds[i].isReserved 的值設置為 false . 要檢查相等性,您需要使用==
或===
(您可以自己查找兩者之間的差異,這里沒關系)。
添加到結果中時,您的行位於 function 大括號之外。 它需要在符合您的條件的{}
內(在您按照上述 1 修復它之后)
您不應該在 Javascript 中添加帶有+
的數組。 它奇怪地將其字符串化並將您的+
操作數附加到末尾。 您想使用數組方法,例如push
: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array result.push(campgrounds[i].number)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.