簡體   English   中英

無法弄清楚如何返回正確的數組

[英]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屬性的新數組。

我在這里看到的三個問題:

  1. 你沒有檢查你認為你的狀況 - 事實上,你沒有檢查任何東西: if (campgrounds[i].isReserved = false)此行將 camgrounds[i].isReserved 的值設置為 false . 要檢查相等性,您需要使用===== (您可以自己查找兩者之間的差異,這里沒關系)。

  2. 添加到結果中時,您的行位於 function 大括號之外。 它需要在符合您的條件的{}內(在您按照上述 1 修復它之后)

  3. 您不應該在 Javascript 中添加帶有+的數組。 它奇怪地將其字符串化並將您的+操作數附加到末尾。 您想使用數組方法,例如pushhttps://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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM