Не могли бы вы объяснить мне, почему я пишу 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";
}
x
— целочисленное значение, которое увеличивается после каждой итерации цикла. Кроме того, массив в JavaScript содержит порядковые номера, начинающиеся с 0. Итак, contacts[x]
здесь представляет собой элемент массива contacts
.
Документацию по массиву можно найти здесь developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
Это единственное значение индекса, когда вы пишете только x, его средний индекс, если вы пишете «x» (в кавычках), тогда вы получаете доступ и вводите объект. В вашем случае, если вы написали contact[x].firstName, это означает, что вы обращаетесь к ключу firstName в объекте на месте x в массиве контактов.
@SajeebAhamed, так что здесь контакты[x][prop] означают, что я выбираю из контактов[0][firstName]. x является одним из этих контактов 4, начиная с 0 до 3. Спасибо.
contracts
- это array
, который имеет 4 объекта в качестве элементов, и каждый объект присутствует с индексом от 0 до 3. Поэтому, когда вы делаете contracts[x]
, он должен возвращать объект с индексом x
. Чтобы получить свойство объекта по индексу x
, вы делаете contracts[x].[prop]
. Надеюсь, это поможет вам.
Да, вы правы, если вы зарегистрируете 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'));
это не
contacts["x"]
, аcontacts[x]
означает, что он использует любое значениеx
, то естьcontacts[0]
,contacts[1]
и т. д.