Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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中实现forEach循环_Javascript_Loops - Fatal编程技术网

我无法在JavaScript中实现forEach循环

我无法在JavaScript中实现forEach循环,javascript,loops,Javascript,Loops,这是我正在使用的名为database的数组的映像 我不知道如何正确使用forEach循环,有人能告诉我为什么它不起作用吗? 这就是我试过的。 forEach循环无法工作的原因是您正在向其传递一个如下所示的函数: 函数f(用户、密码){ 密码=='examplepassword'; 用户=='someuser'; } 您的函数使用了错误的参数forEach遍历一个数组,并将数组中的每个项传递给您正在赋予它的函数。函数的编写方式应如下所示: 功能f(项目){ item.password=='ex

这是我正在使用的名为database的数组的映像

我不知道如何正确使用forEach循环,有人能告诉我为什么它不起作用吗? 这就是我试过的。

forEach循环无法工作的原因是您正在向其传递一个如下所示的函数:

函数f(用户、密码){
密码=='examplepassword';
用户=='someuser';
}
您的函数使用了错误的参数
forEach
遍历一个数组,并将数组中的每个项传递给您正在赋予它的函数。函数的编写方式应如下所示:

功能f(项目){
item.password=='examplepassword';
item.user=='someuser';
}
因此,您希望重写代码,使其更像

db=[{username:'a',password:'abc'},{username:'b',password:'bca'}]
db.forEach(函数(用户){
console.log(“用户”+user.username+“有密码”+user.password);
})
/*输出:
用户a有密码abc
用户b拥有密码bca
*/
额外学分:

您可以在中找到更多详细信息。传递给forEach的函数还可以有两个其他参数,即当前传递的项的nº和原始数组

let a = ['a', 'b', 'c']
function f(item, position, array) {
  console.log("The letter " + item + " is in position " + position)
  console.log("array[position] == " + array[position])
}

a.forEach(f);

/* Output:
The letter a is in position 0
array[position] == a
The letter b is in position 1
array[position] == b
The letter c is in position 2
array[position] == c
*/


forEach期望函数具有对象数组,因为“数据库”具有对象集合。因此,当您传递“函数(用户名、密码)”时,我们不能有两个单独的参数。它应该是功能(obj)

在这种情况下,不需要使用forEach。不要使用代码图片。用代码片段将代码直接放在问题中。检查ForEach循环的文档。如果我们只想使用ForEach实现,这不可能吗?这是可能的,但没有任何意义。这是正确的选择。我希望这只是为了练习,你真的没有把数据库中的用户名和密码带到客户端吗?我只是错过了,如果存在某些元素,我们就不能退出forEach循环。@GauravDas,不客气!如果你喜欢答案,记得接受/投票@GauravDas“我们不能退出forEach”,这就是为什么我说你应该使用
some
。这回答了OP的问题,但如果你有一百万个对象要搜索,这不是很方便。
var database = [{
  username: 'gaurav',
  password: 'password'
}, {
  username: 'gaurav1',
  password: 'password1'
}, {
  username: 'gaurav2',
  password: 'password2'
}];

database.forEach(credential => {// credential is the object = {username, password}
  if (credential.username === credential.username && credential.password === credential.password) {
    console.log('matched');
  }
})