Javascript 使用for in循环查找值时遇到问题
我正在尝试循环此数组的objects元素,并在“for in”循环找到值“bill”时返回“gotcha,bill”。然而,它似乎只返回“不是他”四次。我已经浏览了好几次了,我不确定我遗漏了什么。这是我第一次使用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
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;i findBill(姓名)代码>这不需要两个循环。事实上,您可以使用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”
就是这样一对。名称
是键,票据
是值