如何获取对象的总数组

如何解决如何获取对象的总数组

因此,我要为此项目做的是创建一个函数“ findMyCampsites”,该函数接受三个参数,即营地,视图和partySize。我正在尝试让我的代码接受个人视图偏好“森林”或“海洋”,以及期望的聚会的规模,并返回与用户输入匹配的所有可用露营地的数量。但是,如果没有匹配项,该函数应返回一个空数组。这是到目前为止我能想到的。.无论如何,我不知道为什么要返回[]。我在做什么错了?

> function findMyCampsites(campgrounds,view,partySize){
  let result = []
 for (i = 0; i < campgrounds.length; i++){
   if (campgrounds[i].isReserved === false){
      if (campgrounds[i].view === view){
         result.push(campgrounds[i].view)
       if (campgrounds[i].partySize === partySize){
       result.push(campgrounds[i].partySize)
     result = result + 1;
   

     }  
   } 
 }return result;

 }

}

这也是我的露营地对象

> let campgrounds = [
  { number: 1,view: 'ocean',partySize: 8,isReserved: false },{ number: 5,partySize: 4,{ number: 12,isReserved: true },{ number: 18,view: 'forest',{ number: 23,isReserved: true }
]

解决方法

您可以使用kwargs

您可以使用逻辑或运算符.filter()

链接多个条件

首先,您检查其是否未被&&保留。如果满足此条件,则移至下一个条件,否则返回!ground.isReserved,此当前营地将被过滤掉。

您可以添加更多条件,只需将其与false链接即可。

对于&&,我使用了更大的partySize而不是>=,因为:

例如,如果某人需要4的尺寸,但例如5的尺寸,则不会向他们显示5。他们可能仍会使用5,即使它的1大小很大。当然,如果您严格要求===,只需将===替换为>=

===

,

尝试格式化代码

function findMyCampsites(campgrounds,view,partySize) {
  let result = [];
  for (i = 0; i < campgrounds.length; i++) {
    if (campgrounds[i].isReserved === false) {
      if (campgrounds[i].view === view) {
        result.push(campgrounds[i].view);
        if (campgrounds[i].partySize === partySize) {
          result.push(campgrounds[i].partySize);
          result = result + 1;
        }
      }
    } 
    return result; // inside the for loop
  }
}

您将return放入for循环内。

循环仅在函数返回之前运行一次。

由于campgrounds数组中的第一个元素的键isReserved设置为false(以编程方式表示为campgrounds[0].isReserved === false),因此在函数返回。

,

您已经有一个有关如何使其工作的答案,因此,我将告诉您为什么它不起作用。

问题出在您的return语句中,您在for循环中创建了它,而您本应在它之后创建它。就像您编写代码一样,仅当匹配的营地是第一个营地时,它才能返回一个值。

这就是为什么要注意缩进很重要的原因。下面是您的确切代码,带有更好的缩进。

function findMyCampsites(campgrounds,partySize){
    let result = []
    for (i = 0; i < campgrounds.length; i++) {
        if (campgrounds[i].isReserved === false) {
            if (campgrounds[i].view === view) {
                result.push(campgrounds[i].view)
                if (campgrounds[i].partySize === partySize){
                    result.push(campgrounds[i].partySize)
                    result = result + 1;
                }  
            } 
        }
        return result;
    }
}

let campgrounds = [
  { number: 1,view: 'ocean',partySize: 8,isReserved: false },{ number: 5,partySize: 4,{ number: 12,isReserved: true },{ number: 18,view: 'forest',{ number: 23,isReserved: true }
]

console.log(findMyCampsites(campgrounds,"ocean",8))
console.log(findMyCampsites(campgrounds,"forest",4))


相同的代码,仅需进行一些更正即可

function findMyCampsites(campgrounds,partySize){
    let result = []
    for (i = 0; i < campgrounds.length; i++) {
        if (campgrounds[i].isReserved === false) {
            if (campgrounds[i].view === view) {
                if (campgrounds[i].partySize === partySize){
                    // only push if all tests passed
                    result.push(campgrounds[i].view,campgrounds[i].partySize)
                    // removed the result = result + 1
                    // since it would transform result into a number
                    // and break the loop
                }  
            } 
        }
    }
    // return is as it's expected position
    return result;
}

let campgrounds = [
  { number: 1,4))

,

如果您想使用for循环,请使用for ... of statement并直接获取对象,而无需使用索引(您错过了声明,从而使i成为全局变量)。

在循环内部,您可以撤消支票并提前continue

在循环的最后,您得到了想要的对象。

function findMyCampsites(campgrounds,partySize) {
    let result = [];
    for (let ground of campgrounds) {
        if (ground.isReserved) continue;
        if (ground.view !== view) continue;
        if (ground.partySize !== partySize) continue;
        result.push(ground.number);
    }
    return result;
}

let campgrounds = [{ number: 1,isReserved: true }];

console.log(findMyCampsites(campgrounds,'ocean',4));

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


依赖报错 idea导入项目后依赖报错,解决方案:https://blog.csdn.net/weixin_42420249/article/details/81191861 依赖版本报错:更换其他版本 无法下载依赖可参考:https://blog.csdn.net/weixin_42628809/a
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下 2021-12-03 13:33:33.927 ERROR 7228 [ main] o.s.b.d.LoggingFailureAnalysisReporter : *************************** APPL
错误1:gradle项目控制台输出为乱码 # 解决方案:https://blog.csdn.net/weixin_43501566/article/details/112482302 # 在gradle-wrapper.properties 添加以下内容 org.gradle.jvmargs=-Df
错误还原:在查询的过程中,传入的workType为0时,该条件不起作用 &lt;select id=&quot;xxx&quot;&gt; SELECT di.id, di.name, di.work_type, di.updated... &lt;where&gt; &lt;if test=&qu
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct redisServer’没有名为‘server_cpulist’的成员 redisSetCpuAffinity(server.server_cpulist); ^ server.c: 在函数‘hasActiveC
解决方案1 1、改项目中.idea/workspace.xml配置文件,增加dynamic.classpath参数 2、搜索PropertiesComponent,添加如下 &lt;property name=&quot;dynamic.classpath&quot; value=&quot;tru
删除根组件app.vue中的默认代码后报错:Module Error (from ./node_modules/eslint-loader/index.js): 解决方案:关闭ESlint代码检测,在项目根目录创建vue.config.js,在文件中添加 module.exports = { lin
查看spark默认的python版本 [root@master day27]# pyspark /home/software/spark-2.3.4-bin-hadoop2.7/conf/spark-env.sh: line 2: /usr/local/hadoop/bin/hadoop: No s
使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams[&#39;font.sans-serif&#39;] = [&#39;SimHei&#39;] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -&gt; systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping(&quot;/hires&quot;) public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate&lt;String
使用vite构建项目报错 C:\Users\ychen\work&gt;npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-