Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Ошибка в коде (https://javascript.ru/forum/misc/80572-oshibka-v-kode.html)

Valentin.Zh 22.06.2020 14:46

Ошибка в коде
 
Добрый день! Написал функцию, которая принимает два параметра: ключ - имя или телефон, но не работает: "else{console.log('Пользователь в БД не найден');}". Помогите разобраться, что я делаю не правильно.:(


const users = [
{
name: 'Dima',
age: 39,
phone: '099-245-45-45'
},
{
name: 'Vasya',
age: 28,
phone: '066-500-49-45'
},
{
name: 'Kolya',
age: 39,
phone: '063-100-20-13'
}
];

let userKey = 'Dima';
getUserData(userKey, users);

function getUserData(userKey, userArray) {
for (let i = 0; i < userArray.length; i++) {
if ((userArray[i].name == userKey) || (userArray[i].phone == userKey)) {
console.log('Имя пользователя: ' + userArray[i].name);
console.log('Возраст пользователя: ' + userArray[i].age);
console.log('Телефон пользователя: ' + userArray[i].phone);
} else {
console.log('Пользователь в БД не найден');
}
}
}

laimas 22.06.2020 15:17

Именно так, должно работать (нужно только при нахождении прерывать цикл, иначе то что и получаете), только это не база, а вываливать на страницы пользователя его конфиденциальные данные без его согласия, это наказуемо Законом.

Valentin.Zh 22.06.2020 15:31

Спасибо, что ответили. Вы бы не могли подправить код так как я новичок и только учусь и не знаю как прерывать цикл. С законом я дружу, всего лишь хочу выучить js.

laimas 22.06.2020 15:39

Цитата:

Сообщение от Valentin.Zh
Вы бы не могли подправить код так как я новичок и только учусь

Правильно, это делать запрос к серверу, он ищет и возвращает если найдено, и только те данные о пользователе, которые он может сообщить о себе как публичные.

Вы думаете это шутки? Читайте законодательство - вы как владелец чьих-то данных, обязаны их не просто хранить, но и не разглашать. Если вы будете поступать с ними по своему усмотрению, разглашая их, любой пользователь вправе подать на вас в суд, и суд примет его сторону. Если такая утечка его данных для пользователя будет серьезной проблемой, то наказание для вас может быть очень серьезным.

А прерывание цикла break.

SuperZen 22.06.2020 15:43

const users = [
  {
    name: 'Dima',
    age: 39,
    phone: '099-245-45-45'
  },
  {
    name: 'Vasya',
    age: 28,
    phone: '066-500-49-45'
  },
  {
    name: 'Kolya',
    age: 39,
    phone: '063-100-20-13'
  }
];

let userKey = 'Dima';
getUserData(userKey, users);

function getUserData(userKey, userArray) {
  for (let i = 0; i < userArray.length; i++) {
    if ((userArray[i].name == userKey) || (userArray[i].phone == userKey)) {
      console.log('Имя пользователя: ' + userArray[i].name);
      console.log('Возраст пользователя: ' + userArray[i].age);
      console.log('Телефон пользователя: ' + userArray[i].phone);
      return userArray[i]
    } 
  }
  console.log('Пользователь в БД не найден');
}


или тоже самое:
const users = [
  {
    name: 'Dima',
    age: 39,
    phone: '099-245-45-45'
  },
  {
    name: 'Vasya',
    age: 28,
    phone: '066-500-49-45'
  },
  {
    name: 'Kolya',
    age: 39,
    phone: '063-100-20-13'
  }
];

const getUserData = key => users.find(u => u.name.toLocaleLowerCase() === key.toLocaleLowerCase() || u.phone === key) //  dima === DiMa
// null = not found
console.log(getUserData('dima'))

Valentin.Zh 22.06.2020 15:47

Спасибо Вам огромное!:)


Часовой пояс GMT +3, время: 06:32.