Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/402.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用for in循环查找值时遇到问题_Javascript_Arrays - Fatal编程技术网

Javascript 使用for in循环查找值时遇到问题

Javascript 使用for in循环查找值时遇到问题,javascript,arrays,Javascript,Arrays,我正在尝试循环此数组的objects元素,并在“for in”循环找到值“bill”时返回“gotcha,bill”。然而,它似乎只返回“不是他”四次。我已经浏览了好几次了,我不确定我遗漏了什么。这是我第一次使用for-in循环,所以我可能会误解它的工作原理 任何帮助都将不胜感激 var names = [{name: 'steven', age: 22}, {name: 'bill', age: 13}]; function findBill(array) { for(let i = 0

我正在尝试循环此数组的objects元素,并在“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)
var name=[{name:'steven',年龄:22},{name:'bill',年龄:13}];
函数findBill(数组){
for(设i=0;i
这里。我将
for
循环更改为
forEach
,但这并不是解决问题的主要方法。这是访问对象属性的方式。我使用
forEach
,因为它(对我来说)更容易从对象中获取所需的数据

var name=[{name:'steven',年龄:22},{name:'bill',年龄:13}];
函数findBill(数组){
array.forEach(函数(人){
如果(person.name==='bill'){
返回console.log('gotcha,bill');
}否则{
console.log(“不是他”);
}
});
}

findBill(names)
key
就是——每个对象的键,即,
name
age
。您需要在正确的索引处实际索引到数组中,然后使用
if(array[i][key]=='bill')
访问您在循环中检查的键的值

下面是一个工作示例:

var name=[{name:'steven',年龄:22},{name:'bill',年龄:13}];
函数findBill(数组){
for(设i=0;ifindBill(姓名)这不需要两个循环。事实上,您可以使用
Array.find()
方法来查找所需的对象,并对其执行所需操作:

const people = [{name: 'steven', age: 22}, {name: 'bill', age: 13}];
const findByName = (data, name) => data.find(cur => cur.name === name);
const Bill = findByName(people, 'bill');

if (Bill === null) { console.log(`could not find bill`); }
else { console.log(`bill is ${Bill.age} years old`); }

for..in
迭代对象的键。由于
bill
是一个值,而不是一个键,因此
(键=='bill')
测试将永远不会计算为
true

如果要迭代对象的值,请使用
object.values
,因为听起来像是要查找
bill
对象,所以可以使用
.find

var name=[{name:'steven',年龄:22},{name:'bill',年龄:13}];
函数findBill(数组){
返回数组。查找((obj)=>(
Object.values(obj).includes('bill'))
))
};

console.log(findBill(names))
bill
不是键
bill
是一个值。嗯,也许我误解了我所看到的参考,得出了错误的结论。学习数组方法是值得的,所以你不需要那么多代码。你可以通过以下方式找到比尔:
let bill=names.find(({name})=>name==bill')
谢谢!我使用for-in循环来跟随教程。再次感谢!否,
“账单”
是一个值。对象有键值对-
名称:“bill”
就是这样一对。
名称
是键,
票据
是值