首页 > 解决方案 > 使用 for-in 循环查找价值时遇到问题

问题描述

我试图遍历这个数组的对象元素并在“for in”循环找到值“bill”时返回“gotcha,bill”。然而,它似乎只返回了四次“不是他”。我已经浏览了好几次,但我不确定我错过了什么。这是我第一次使用 for in 循环,所以我可能会误解它的工作原理。

任何帮助,将不胜感激!

var names = [{name: 'steven', age: 22}, {name: 'bill', age: 13}];

function findBill(array) {
  for(let i = 0; i < array.length; i++) {
      for(let key in array[i]) {
        if(key === 'bill') {
          return console.log('gotcha, bill');
        } else {
          console.log('not him');
        }
      }
    }
  }

findBill(names)

标签: javascriptarrays

解决方案


这里。我将您的for循环更改为,forEach但这不是解决您问题的主要内容。这是您访问对象属性的方式。我使用forEach它是因为(对我来说)从对象中获取所需的数据会更容易。

var names = [{name: 'steven', age: 22}, {name: 'bill', age: 13}];

function findBill(array) {
  array.forEach(function(person){
    if(person.name === 'bill') {
      return console.log('gotcha, bill');
    } else {
      console.log('not him');
    }
  });
}

findBill(names)

for如果您坚持使用循环,这就是应该的样子。

var names = [{name: 'steven', age: 22}, {name: 'bill', age: 13}];

function findBill(array) {
  for(let i = 0; i < array.length; i++) {
      if(array[i].name === 'bill') {
        return console.log('gotcha, bill');
      } else {
        console.log('not him');
      }
    }
  }

findBill(names)


推荐阅读