undefined в консоле JavaScript хотя вроде всё нормально
Так, вот основной код:
const people = [
{name: 'Elena', budget: '2222'},
{name: 'Luisa', budget: '3000'},
{name: 'David', budget: '3500'}
]
const person = people.find(function(person) {
return person.budget === 3500
})
console.log(person)
Если что, скрипт пустой, ничего кроме предоставленного нету То есть, никаких вроде ошибок, и путаниц, но на выходе:
P.S. Попробовал вот так:
const person = people.find((person) => {
return person.budget === 3500
})
console.log(person)
Но тоже без результатно.
Ответы (4 шт):
У вас в budget - строковые значения. Ищите вы через строгое сравнение с конкретным числом. Внимание вопрос: что должно найтись?
Вам лучше бы изменить массив с объектами. Цены на товары не должны быть строками, их лучше сделать числами
Что вы делаете:
- Вы проходитесь циклом по массиву (метод find это цикл)
- Ходите по объектам person, у которого есть два поля: 1-name, является строкой; 2-budget, является строкой
- Проверяете что у объекта
personполеbudget(является строкой) строго сравниваете, что он будет равняться числу(другой тип данных)
в JavaScript если строго сравнить строку '3500' и число 3500 будет false (ты так сравниваешь в своём примере кода)
const people = [{
name: 'Elena',
budget: '2222'
},
{
name: 'Luisa',
budget: '3000'
},
{
name: 'David',
budget: '3500'
}
]
const person = people.find(function(person) {
return person.budget === '3500'
})
document.write(`
<h1>Вот чему равняется переменная person:</h1>
<pre>${JSON.stringify(person)}<pre>
`);
Вот так будет работать
const person = people.find((person) => {
return Number(person.budget) === 3500
})
console.log(person)
Ну вам уже вроде максимально подробно все объяснили. Скину просто два рабочих варианта, но это будут не совсем верные подходы, которые вряд ли стоит использовать на реальных проектах.
const people = [
{name: 'Elena', budget: '2222'},
{name: 'Luisa', budget: '3000'},
{name: 'David', budget: '3500'}
];
const person = people.find(person => parseInt(person.budget) === 3500);
console.log(person)
const people = [
{name: 'Elena', budget: '2222'},
{name: 'Luisa', budget: '3000'},
{name: 'David', budget: '3500'}
];
const person = people.find(person => person.budget == 3500);
console.log(person)
PS: я заменил Вашу функцию внутри find() на стрелочную лишь для более короткой записи. На работу это никак не влияет и Вы можете передавать функцию, с телом и return внутри, но зачем это делать в данном случае?)
