首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >使用for循环的数组迭代-使用条件语句和返回

使用for循环的数组迭代-使用条件语句和返回
EN

Stack Overflow用户
提问于 2019-07-13 12:10:20
回答 2查看 83关注 0票数 1

对于此对象数组:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var contacts = [
  {
      "firstName": "Akira",
      "lastName": "Laine",
      "number": "0543236543",
      "likes": ["Pizza", "Coding", "Brownie Points"]
  },
  {
      "firstName": "Harry",
      "lastName": "Potter",
      "number": "0994372684",
      "likes": ["Hogwarts", "Magic", "Hagrid"]
  },
  {
      "firstName": "Sherlock",
      "lastName": "Holmes",
      "number": "0487345643",
      "likes": ["Intriguing Cases", "Violin"]
  },
  {
      "firstName": "Kristian",
      "lastName": "Vos",
      "number": "unknown",
      "likes": ["JavaScript", "Gaming", "Foxes"]
  }
];

然后有一个for循环,它遍历对象数组和要在对象上查找的参数。我知道我们正在迭代,函数会在returns之后停止运行。我包含了一个console.log(i);来查看迭代器变量的值,以查看循环发生了多少次。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
function lookUpProfile(name, prop) {  

    for (var i = 0; i < contacts.length; i++) {  
      console.log(i);
      if (contacts[i].firstName === name) {  
        if (contacts[i].hasOwnProperty(prop)) {         
          return contacts[i][prop]   
        } else {
          return "No such property"; 
        }
      }

    } //end of loop
  return "No such contact"; 
  }


   console.log(lookUpProfile("Kristian", "lastName")); // Vos

所以我运行代码并查看我的控制台输出,得到我期望的结果,我们迭代4次,然后我们return当前对象属性。

为什么当我重构函数时,代码不能工作,所以我使用逻辑AND运算符&&,它将两个测试条件组合成一个if语句,而不是使用两个嵌套的if条件-如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
function lookUpProfile(name, prop) { 
  for (var i = 0; i < contacts.length; i++) {  
    console.log(i);
    if (contacts[i].firstName === name && contacts[i].hasOwnProperty(prop)) {                 
      return contacts[i][prop]   
    } else {
      return "No such property"; 
    }

  } //end of loop
  return "No such contact"; 
}

 console.log(lookUpProfile("Kristian", "lastName")); // Expected output: Vos

现在,当我运行代码时,似乎没有发生迭代,因为console.log(i);似乎只输出一次undefined,而不是多次输出,所以我们似乎没有循环,我不明白为什么。其次,即使我们的测试条件得到满足,我们也会返回“没有这样的属性”。

如果这个简单的重构破坏了函数,我需要理解的是。我知道一旦函数返回一些东西,函数执行就会结束,迭代就会停止,我认为这个问题与循环之外和控制流中断有关,但我不明白为什么。请有人清楚地解释为什么在我的具体案例中会发生这种情况。

EN

回答 2

Stack Overflow用户

发布于 2019-07-13 12:14:45

如果嵌套了if条件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
if (contacts[i].firstName === name)

如果name不匹配,则此函数检查name。它不执行任何操作

但在第二个示例中,在if之后的else语句中返回,如果case name不匹配,则从函数返回

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 if (contacts[i].firstName === name && contacts[i].hasOwnProperty(prop)) {                 
      return contacts[i][prop]   
    } else {                           // problem is here
  return "No such property"; 
 }

只需从循环中删除else条件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var contacts = [{"firstName": "Akira","lastName": "Laine","number": "0543236543","likes": ["Pizza", "Coding", "Brownie Points"]},{"firstName": "Harry","lastName": "Potter","number": "0994372684","likes": ["Hogwarts", "Magic", "Hagrid"]},{"firstName": "Sherlock","lastName": "Holmes","number": "0487345643","likes": ["Intriguing Cases", "Violin"]},{"firstName": "Kristian","lastName": "Vos","number": "unknown","likes": ["JavaScript", "Gaming", "Foxes"]}];


function lookUpProfile(name, prop) {
  for (var i = 0; i < contacts.length; i++) {
    if (contacts[i].firstName === name && contacts[i].hasOwnProperty(prop)) {
      return contacts[i][prop]
    }
  } //end of loop
  return "No such contact";
}

console.log(lookUpProfile("Kristian", "lastName"));

票数 1
EN

Stack Overflow用户

发布于 2019-07-13 12:13:35

因为在前面的代码中,只有当contacts[i].hasOwnProperty(prop)false时才返回"No such property"。现在,如果contacts[i].firstName === name为false,也会返回。您希望将这两个if块分开。

此外,console.log(i)打印undefined的原因还在于它位于for循环之上,在i变量的声明之前。将其下移1行。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57019030

复制
相关文章
Python条件语句和循环语句简单使用方法
Python条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块。
Python学习者
2022/11/07
1.6K0
Python基础入门_3条件语句和迭代循环
Python 的条件语句就是通过一条或者多条语句的执行结果(判断 True 或者 False)来决定执行的代码块。
kbsc13
2019/08/16
7890
python的条件语句和循环
# 4.py #code=utf-8 # python的条件语句和循环 # if 语句 age = 40 if age > 18: print 'your age is ', age print 'adult' # if else 语句 age = 40 if age > 18: print 'adult' else: print 'no adult' # if elseif else 语句 age = 40 if age > 18: print 'adult' el
公众号-利志分享
2022/04/25
1.2K0
迭代循环:for语句
• 简单类型用来表示值:整数int、浮点数float、复数complex、逻辑值bool、字符串str
陆勤_数据人网
2020/08/27
8190
Python入门基础解答条件判断语句和循环语句的新手使用教程
无论什么语言都不会缺少条件判断语句和循环语句。我们日常中也有条件判断和循环,条件判断(明天如果下雨就不出门,如果晴天就出门。);循环(上学朗读课文,老师说:把文章的第几段落读三遍,重复一遍又一遍。)
啦啦啦
2018/12/27
1.5K0
Python入门基础解答条件判断语句和循环语句的新手使用教程
js数组操作--使用迭代方法替代for循环
数组的迭代方法,这个想必大家都不陌生了,可能刚入门的人暂时还没接触到这个。但是以后的开发中,肯定会用得上的。我自身的一个使用经历就是,如果迭代方法用的适当,不但可以减少代码量,也能使代码可读性更强,性能上的优化也是肯定的了。还有一个就是,我本身在数组的遍历上,基本都是用for循环进行操作,在开始使用了迭代方法之后,我for循环用的很少。如果以后我更加熟练迭代方法的话,for使用会更少,也希望这样能帮助大家学习迭代方法。
守候i
2018/08/22
3.3K0
js数组操作--使用迭代方法替代for循环
Python入门基础解答条件判断语句和循环语句的新手使用教程
无论什么语言都不会缺少条件判断语句和循环语句。我们日常中也有条件判断和循环,条件判断(明天如果下雨就不出门,如果晴天就出门。);循环(上学朗读课文,老师说:把文章的第几段落读三遍,重复一遍又一遍。)
啦啦啦
2019/03/17
1.4K0
Python入门基础解答条件判断语句和循环语句的新手使用教程
python 条件语句、循环语句
if (n>0and n<5) or (n>10andn<15) ()优选级运算符
py3study
2020/01/14
2.6K0
Python爬虫基础五:循环语句和条件语句
一、前言 本系列文章,代码运行展示,将使用PyCharn进行运行。 二、循环语句 1、遍历循环 格式: for 变量 in range(stop) ==>遍历0~stop-1 for 变量 in range(start,stop) ==>遍历start~stop-1 for 变量 in range(start,stop,step) ==>遍历start~stop-1,默认步长为1 例如: print('格式1结果') for i in range(4): print(i) print('格式二
远方的星
2021/08/05
9120
Python爬虫基础五:循环语句和条件语句
python学习之if条件和for循环语句
从控制台获取一个成绩,根据成绩判断:如果>80 优秀,>70良好,>60及格,<60不及格
吾爱乐享
2019/12/30
8660
python之条件-循环和其他语句
如何使用print来打印表达式----不管是字符串还是其他类型进行自动转换后的字符串。
py3study
2020/01/15
7550
switch语句和for循环的认识与使用
1)表达式数据类型,应和 case 后的常量类型一致或者hi可以自动转成互相比较的类型,比如输入的是字符,而常量是 int
zxmttkx
2022/12/02
1.4K0
循环使用 else 语句
在 python 中,while … else 在循环条件为 false 时执行 else 语句块:
用户8442333
2021/05/26
1.2K0
[Python从零到壹] 二.语法基础之条件语句、循环语句和函数
在讲诉条件语句之前,需要先补充语句块的知识。语句块并非一种语句,它是在条件为真时执行一次或执行多次的一组语句,在代码前放置空格缩进即可创建语句块。它类似于C、C++、Java等语言的大括号({ })来表示一个语句块的开始和结束。
Eastmount
2021/12/02
7880
[Python从零到壹] 二.语法基础之条件语句、循环语句和函数
[Python从零到壹] 二.语法基础之条件语句、循环语句和函数
欢迎大家来到“Python从零到壹”,在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界。所有文章都将结合案例、代码和作者的经验讲解,真心想把自己近十年的编程经验分享给大家,希望对您有所帮助,文章中不足之处也请海涵。
Eastmount
2021/02/20
9020
【Python】第二章(条件语句和循环语句)
各位小伙伴们大家好,在此之前我跟大家介绍过[python]的第一章,如果还没有看的小伙伴们可以去看看,这是链接:[Python]第一章(建议收藏)_泽奀的博客-CSDN博客,蟹蟹支持。那么本篇博客讲的就是如标题一样的内容,如果觉得对你有帮助的话,请点赞+收藏支持一波博主。博主在这里真的是非常感谢,蟹蟹大家一路下来对博主的支持。那么我博主话不多说直接开始今天的文章内容......那么在这里我跟大家先分别说下什么是判断语句以及循环语句。
謓泽
2022/12/12
8160
【Python】第二章(条件语句和循环语句)
6-条件,循环语句
​ is运算符是用于判断同一性而不是相等性, x,y因为指向同一个列表所以结果为True, 但是变量z指向的是另一个 列表,即使列表中的值相等,确不是同一个对象,所以结果为False.
用户3106371
2018/09/12
1.2K0
6-条件,循环语句
matlab条件跳出语句,if语句跳出循环
在 C语言 的 switch(开关语句)中,break 语句还可用来在执行完一个 case(分支)后立即跳出当前 switch 结构。
全栈程序员站长
2022/09/05
4.3K0
Python条件语句与循环
1、判断与循环 python 缩进 main: print("Hello") print("Hello world.")
py3study
2020/01/06
5800
进阶分支语句和使用while循环及break语句
了解和使用分支语句和while循环及break语句,加入数学运算并配合for循环,使用计算变量进行累加或累减操作。
楚客追梦
2022/11/11
1K0
进阶分支语句和使用while循环及break语句

相似问题

使用循环和条件语句迭代嵌套字典

23

使用循环和if else语句迭代数组

20

使用for of循环和if..else语句迭代和检查数组

20

使用for循环语句理解数组迭代

45

使用循环和条件语句比较数组中的元素

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文