【问题标题】:Can't figure out how to return the correct array无法弄清楚如何返回正确的数组
【发布时间】:2020-12-01 19:59:55
【问题描述】:

我有一个问题,我无法找到最佳解决方法。在这里,我希望能够快速找到可用的露营地。我正在尝试返回一个包含所有当前未保留的露营地编号的数组。我以为我已经弄清楚了所有代码,直到我看到我的代码似乎返回的是字符串而不是值。

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;
  }

这是露营地的物品。我正在尝试从所有未保留的露营地返回数字变量。这是我试图返回的一个例子。 [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 }
]

【问题讨论】:

    标签: javascript arrays function for-loop if-statement


    【解决方案1】:

    现在您正在使用这一行将值 'isReserved' 设置为 false:

    if (campgrounds[i].isReserved = false){//If the campground is available 
    

    = 是一个集合,== 是一个测试。试试这个:

    if (campgrounds[i].isReserved == false){//If the campground is available 
    

    【讨论】:

      【解决方案2】:

      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;
        }
      

      【讨论】:

        【解决方案3】:

        您需要使用比较运算符 (==) 而不是赋值运算符 (=) 来评估条件,然后将该值推送到结果数组中。

        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))

        【讨论】:

          【解决方案4】:
          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;
          }
          

          【讨论】:

            【解决方案5】:

            你可以这样做更干净:

            function availableCampsites(campgrounds){
              return campgrounds.filter(c => c.isReserved === false)
                                .map(c => c.number);
            }
            

            它首先将数组过滤为您想要的数组,然后将过滤后的结果映射到其number 属性的新数组。

            【讨论】:

              【解决方案6】:

              我在这里看到的三个问题:

              1. 您没有检查您认为自己的状况 - 事实上,您没有检查任何内容: if (campgrounds[i].isReserved = false) 此行 camgrounds[i].isReserved 的值设置为false。要检查相等,你需要使用=====(你可以自己查找两者之间的差异,这里应该没关系)。

              2. 当您添加到结果中时,您的行在函数大括号之外。它需要在符合您的条件的{} 内(在您按照上述 1 修复它之后)

              3. 您不应该在 Javascript 中使用 + 添加到数组中。它奇怪地将它字符串化并将您的 + 操作数附加到末尾。您想使用数组方法,例如 push: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array result.push(campgrounds[i].number)

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2019-10-26
                • 2019-03-12
                • 2020-06-19
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2020-06-21
                • 1970-01-01
                相关资源
                最近更新 更多