![Старый](/forum/images/ca_serenity/statusicon/post_old.gif)
20.11.2021, 11:33
|
Новичок на форуме
|
|
Регистрация: 20.11.2021
Сообщений: 5
|
|
Сравнить объект с undefined
Здравствуйте! Подскажите, пожалуйста. Нужно определить, есть ли поле в элементе массива, и если его нет, то удалить этот элемент из массива объектов. Пытаюсь так - не выходит. Ругается так: Cannot read properties of undefined (reading 'groupld')
const students = [
{ id: 1, fullName: "Иванов Сергей", age: 18, groupld: 3 },
{ id: 2, fullName: "Фролова Василиса", age: 17, groupld: 3 },
{ id: 3, fullName: "Курочкина Диана", age: 18, groupld: 5 },
{ id: 4, fullName: "Кравцов Алексей", age: 19, groupld: 4 },
{ id: 5, fullName: "Краснова Елизавета", age: 19, groupld: 3 },
{ id: 6, fullName: "Королев Александр", age: 19 },
{ id: 7, fullName: "Игнатьев Влад", age: 20, groupld: 2 },
{ id: 8, fullName: "Сергеев Михаил", age: 18, groupld: 1 },
{ id: 9, fullName: "Зайцев Виталий", age: 18, groupld: 1 },
{ id: 10, fullName: "Курочкина Евгения", age: 18, groupld: 3 },
{ id: 11, fullName: "Васильев Александр", age: 19, groupld: 4 }
];
function foo(arr1) {
let copyStudents = JSON.parse(JSON.stringify(arr1));
let a = Object.keys(copyStudents).length;
for ( let i = 0; i <= a; i++ ) {
if ( typeof copyStudents[i].groupld === undefined ) {
delete copyStudents[i];
}
}
foo(students);
|
|
![Старый](/forum/images/ca_serenity/statusicon/post_old.gif)
20.11.2021, 12:07
|
![Аватар для рони](https://javascript.ru/forum/image.php?u=7416&dateline=1372796129) |
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,135
|
|
spavels,
не бывает элементов равных length!!! строка 19
читать про метод splice (строка 21)и оператор in(строка 20)
|
|
![Старый](/forum/images/ca_serenity/statusicon/post_old.gif)
20.11.2021, 12:25
|
Новичок на форуме
|
|
Регистрация: 20.11.2021
Сообщений: 5
|
|
спасибо, почитаю - исправлю. Но, все же, если проверю alert(a), то выдает именно то, что мне и нужно - цифру равную количеству элементов в массиве. На этом этапе мне это и нужно. Вот как проверить поле на undefined так и не понял.
|
|
![Старый](/forum/images/ca_serenity/statusicon/post_old.gif)
20.11.2021, 12:33
|
![Аватар для voraa](https://javascript.ru/forum/image.php?u=69123&dateline=1640150450) |
Профессор
|
|
Регистрация: 03.02.2020
Сообщений: 2,756
|
|
Сообщение от spavels
|
Но, все же, если проверю alert(a), то выдает именно то, что мне и нужно - цифру равную количеству элементов в массиве
|
Посчитайте пальцы на руке, начиная с 0. Получится 4 или 5?
Сообщение от spavels
|
Вот как проверить поле на undefined так и не понял.
|
Сложный вопрос. Смотря, что нужно. Нет такого свойтва или оно может быть, но может быть равно undefined.
let o = (x:undefined}
o.x === undefined // true
o.y === undefined // true
'x' in o // true
'y' in o // false
|
|
![Старый](/forum/images/ca_serenity/statusicon/post_old.gif)
20.11.2021, 12:45
|
Новичок на форуме
|
|
Регистрация: 20.11.2021
Сообщений: 5
|
|
Я понимаю, что с нуля считается. Но посчитайте сколько элементов у меня в массиве и запустите мой код с alert(a). Элементов 11 в массиве и а = 11. Мне ведь это и нужно. Или Object.keys считывает дополнительно что-то еще?
|
|
![Старый](/forum/images/ca_serenity/statusicon/post_old.gif)
20.11.2021, 12:47
|
Новичок на форуме
|
|
Регистрация: 20.11.2021
Сообщений: 5
|
|
А.. у меня i начинает цикл с нуля )
|
|
![Старый](/forum/images/ca_serenity/statusicon/post_old.gif)
20.11.2021, 12:49
|
![Аватар для voraa](https://javascript.ru/forum/image.php?u=69123&dateline=1640150450) |
Профессор
|
|
Регистрация: 03.02.2020
Сообщений: 2,756
|
|
const a = [1,2,3,4,5]
a.length == 5
a[0] === 1
a[1] === 2
a[2] === 3
a[3] === 4
a[4] === 5
a[5] === undefined
Что непонятно?
|
|
![Старый](/forum/images/ca_serenity/statusicon/post_old.gif)
20.11.2021, 14:50
|
Новичок на форуме
|
|
Регистрация: 20.11.2021
Сообщений: 5
|
|
Убрал цикл. Нашел такое решение с методом filter():
const students = [
{ id: 1, fullName: "Иванов Сергей", age: 18, groupld: 3 },
{ id: 2, fullName: "Фролова Василиса", age: 17, groupld: 3 },
{ id: 3, fullName: "Курочкина Диана", age: 18, groupld: 5 },
{ id: 4, fullName: "Кравцов Алексей", age: 19, groupld: 4 },
{ id: 5, fullName: "Краснова Елизавета", age: 19, groupld: 3 },
{ id: 6, fullName: "Королев Александр", age: 19 },
{ id: 7, fullName: "Игнатьев Влад", age: 20, groupld: 2 },
{ id: 8, fullName: "Сергеев Михаил", age: 18, groupld: 1 },
{ id: 9, fullName: "Зайцев Виталий", age: 18, groupld: 1 },
{ id: 10, fullName: "Курочкина Евгения", age: 18, groupld: 3 },
{ id: 11, fullName: "Васильев Александр", age: 19, groupld: 4 }
];
function foo(arr1) {
console.log(arr1);
let copyStudents = arr1.filter((item) => item.groupld !== undefined);
console.log(copyStudents);
}
foo(students);
|
|
|
|