Поиск из массива и создание цикла for

Не могли бы вы объяснить мне, почему я пишу contacts[x] в этом (contacts[x].firstName === name). Хорошо, понял, я создаю петлю for (var x = 0; x < contacts.length; x++){} Однако я не могу понять значение contacts[x]. "x" не находится в массиве. Как я могу выбрать его прямо из такой функции? Это как индекс? Я имею в виду, что это позиция x в массиве, поэтому я выбираю оттуда?

var contacts = [{
    "firstName": "Akira",
    "lastName": "Laine",
    "number": "0543236543",
    "likes": ["Pizza", "Coding", "Brownie Points"]
  },
  {
    "firstName": "Harry",
    "lastName": "Potter",
    "number": "0994372684",
    "likes": ["Hogwarts", "Magic", "Hagrid"]
  },
  {
    "firstName": "Sherlock",
    "lastName": "Holmes",
    "number": "0487345643",
    "likes": ["Intriguing Cases", "Violin"]
  },
  {
    "firstName": "Kristian",
    "lastName": "Vos",
    "number": "unknown",
    "likes": ["JavaScript", "Gaming", "Foxes"]
  }
];

//The function should check if name is an actual contact's firstName
//the given property (prop) is a property of that contact.
//If both are true, then return the "value" of that property.
//If prop does not correspond to any valid properties of a contact found to match name then return "No such property".
//If name does not correspond to any contacts then return "No such contact".

function lookUpProfile(name, prop) {
  for (var x = 0; x < contacts.length; x++) {
    if (contacts[x].firstName === name) {
      if (contacts[x].hasOwnProperty(prop)) {
        return contacts[x][prop];
      } else {
        return "No such property";
      }
    }
  }
  return "No such contact";
}

это не contacts["x"], а contacts[x] означает, что он использует любое значение x, то есть contacts[0], contacts[1] и т. д.

phuzi 24.12.2020 14:17
x — целочисленное значение, которое увеличивается после каждой итерации цикла. Кроме того, массив в JavaScript содержит порядковые номера, начинающиеся с 0. Итак, contacts[x] здесь представляет собой элемент массива contacts.
Sajeeb Ahamed 24.12.2020 14:17

Документацию по массиву можно найти здесь developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…

phuzi 24.12.2020 14:19

Это единственное значение индекса, когда вы пишете только x, его средний индекс, если вы пишете «x» (в кавычках), тогда вы получаете доступ и вводите объект. В вашем случае, если вы написали contact[x].firstName, это означает, что вы обращаетесь к ключу firstName в объекте на месте x в массиве контактов.

ValeriF21 24.12.2020 14:20

@SajeebAhamed, так что здесь контакты[x][prop] означают, что я выбираю из контактов[0][firstName]. x является одним из этих контактов 4, начиная с 0 до 3. Спасибо.

Owlthegentleman 24.12.2020 14:23
contracts - это array, который имеет 4 объекта в качестве элементов, и каждый объект присутствует с индексом от 0 до 3. Поэтому, когда вы делаете contracts[x], он должен возвращать объект с индексом x. Чтобы получить свойство объекта по индексу x, вы делаете contracts[x].[prop]. Надеюсь, это поможет вам.
Aftab Ansari 24.12.2020 14:31
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
6
82
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Да, вы правы, если вы зарегистрируете x в консоли, он выведет индекс

 for (var x = 0; x < contacts.length; x++) {
    console.info(x);
    if (contacts[x].firstName === name) {
      if (contacts[x].hasOwnProperty(prop)) {
        return contacts[x][prop];
      } else {
        return "No such property";
      }
    }
  }

Таким образом, в основном цикл инициализирует x значением 0, повторяет код цикла и увеличивает x. Тем временем вы получаете доступ к индексу массива, используя переменную «x» ( contacts[x])

Ответ принят как подходящий

Переменная x является индексом. Например, если x = 1, то contacts[x] совпадает с contacts[1]. Он перебирает каждое число между 0 и length из contacts.

Обычно i — это имя переменной вместо x, что означает целое число. Так. Но можно использовать любое имя (например, x).

for (var i=0; i < array.length; i++) {
    var item = array[i]
}

Вы можете использовать Array.prototype.find():

var contacts = [{
    "firstName": "Akira",
    "lastName": "Laine",
    "number": "0543236543",
    "likes": ["Pizza", "Coding", "Brownie Points"]
  },
  {
    "firstName": "Harry",
    "lastName": "Potter",
    "number": "0994372684",
    "likes": ["Hogwarts", "Magic", "Hagrid"]
  },
  {
    "firstName": "Sherlock",
    "lastName": "Holmes",
    "number": "0487345643",
    "likes": ["Intriguing Cases", "Violin"]
  },
  {
    "firstName": "Kristian",
    "lastName": "Vos",
    "number": "unknown",
    "likes": ["JavaScript", "Gaming", "Foxes"]
  }
];

const lookUp = (name, prop) => {
  const profile = contacts.find(c => c.firstName === name);
  if (profile) {
    if (profile.hasOwnProperty(prop)) {
      return profile[prop];
    }
    return 'No such Property';
  }
  return 'No such contact';
}

console.info(lookUp('Sherlock', 'lastName'));
console.info(lookUp('Sherloc', 'lastName'));
console.info(lookUp('Sherlock', 'lastNameasdds'));

Другие вопросы по теме