Цикл не будет искать по всему массиву объектов? - PullRequest
0 голосов
/ 07 марта 2019

Для javascript у меня есть массив объектов, и я хочу посмотреть, соответствует ли запись пользователя 2 из свойств любого из трех объектов в моем массиве.По какой-то причине мой цикл for работает только для первого объекта, но никогда не проверяет два других.Как я могу это исправить?

class Customer {
  constructor(fN, lN, bal, cID, pass) {
    this.firstName = fN;
    this.lastName = lN;
    this.balance = bal;
    this.customerID = cID;
    this.password = pass;
  }
}

const bankers = [];
bankers.push(new Customer("Jack", "Scott", 3689.21, "4552", "2811"));
bankers.push(new Customer("John", "Smith", 2500.00, "4553", "1234"));
bankers.push(new Customer("Albert", "Price", 100000.00, "4554", "6189"));

let userID = prompt(`Please enter your customer ID.`);
let userPass = prompt(`Please enter your password.`);

for (let i = 0; i < bankers.length; i++) {
  if (bankers[i].customerID === userID && bankers[i].password === userPass) {
    console.log('Yay'); break;
  } else {
    console.log('boo'); break;
  }
}

Мой цикл «for» работает только при тестировании первого клиента.Если я попытаюсь ввести пароль или пароль для двух других, произойдет сбой.Почему это происходит?Я думал, что переменная i должна пройти через все 3 объекта

1 Ответ

2 голосов
/ 07 марта 2019

Две вещи - во-первых, вы пропустили цитату перед Jack.Во-вторых, вам нужно переопределять переменные каждый раз, когда запускается ваш цикл - переместите ваши объявления userID и userPass внутри вашего цикла:

class Customer {
  constructor(fN, lN, bal, cID, pass) {
    this.firstName = fN;
    this.lastName = lN;
    this.balance = bal;
    this.customerID = cID;
    this.password = pass;
  }
}

const bankers = [];
bankers.push(new Customer("Jack", "Scott", 3689.21, "4552", "2811"));
bankers.push(new Customer("John", "Smith", 2500.00, "4553", "1234"));
bankers.push(new Customer("Albert", "Price", 100000.00, "4554", "6189"));

for (let i = 0; i < bankers.length; i++) {
  let userID = prompt(`Please enter your customer ID.`);
  let userPass = prompt(`Please enter your password.`);
  if (bankers[i].customerID === userID && bankers[i].password === userPass) {
    console.log('Yay');
  } else {
    console.log('boo');
  }
}

РЕДАКТИРОВАТЬ

Основываясь на комментариях, я считаю, что вы хотите использовать some, например, так:

class Customer {
  constructor(fN, lN, bal, cID, pass) {
    this.firstName = fN;
    this.lastName = lN;
    this.balance = bal;
    this.customerID = cID;
    this.password = pass;
  }
}

const bankers = [];
bankers.push(new Customer("Jack", "Scott", 3689.21, "4552", "2811"));
bankers.push(new Customer("John", "Smith", 2500.00, "4553", "1234"));
bankers.push(new Customer("Albert", "Price", 100000.00, "4554", "6189"));

  let userID = prompt(`Please enter your customer ID.`);
  let userPass = prompt(`Please enter your password.`);
  if (bankers.some(banker => banker.customerID == userID && banker.password == userPass)) {
    console.log('Yay');
  } else {
    console.log('boo');
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...