Я не могу реализовать forEach l oop in JavaScript - PullRequest
0 голосов
/ 24 января 2020

Это образ массива с именем database, который я использую

Я не знаю, как правильно использовать forEach l oop, кто-то может сказать, почему это не работает? Это то, что я пытался.

Ответы [ 2 ]

0 голосов
/ 24 января 2020
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');
  }
})

forEach будет ожидать функцию, имеющую массив объектов, так как «база данных» имеет коллекцию объектов. Таким образом, мы не можем иметь 2 отдельных параметра, когда вы передаете «функцию (имя пользователя, пароль)». Это должна быть функция (объект).

0 голосов
/ 24 января 2020

Причина, по которой ваш forEach l oop не работает, заключается в том, что вы передаете ему функцию, которая выглядит следующим образом:

function f(user, password) {
  password == 'examplepassword';
  user == 'someuser';
}

Ваша функция принимает неправильные параметры. forEach перебирает массив и передает каждый элемент массива функции, которую вы ему передаете. Вместо этого функция должна быть написана следующим образом:

function f(item) {
  item.password == 'examplepassword';
  item.user == 'someuser';
}

Таким образом, вы захотите переписать свой код, чтобы он был больше похож на

db = [{username: 'a', password: 'abc'}, {username: 'b', password: 'bca'}]

db.forEach(function(user) {
  console.log("user " + user.username + " has password " + user.password);
})
/* Output:
user a has password abc
user b has password bca
*/

Дополнительный кредит:

Вы можете найти подробности в документации для forEach . Функция, которую вы передаете 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
*/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...