Сравнить объект с 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); |
spavels,
не бывает элементов равных length!!! строка 19 читать про метод splice (строка 21)и оператор in(строка 20) |
спасибо, почитаю - исправлю. Но, все же, если проверю alert(a), то выдает именно то, что мне и нужно - цифру равную количеству элементов в массиве. На этом этапе мне это и нужно. Вот как проверить поле на undefined так и не понял.
|
Цитата:
Цитата:
let o = (x:undefined} o.x === undefined // true o.y === undefined // true 'x' in o // true 'y' in o // false |
Я понимаю, что с нуля считается. Но посчитайте сколько элементов у меня в массиве и запустите мой код с alert(a). Элементов 11 в массиве и а = 11. Мне ведь это и нужно. Или Object.keys считывает дополнительно что-то еще?
|
А.. у меня i начинает цикл с нуля )
|
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 Что непонятно? |
Убрал цикл. Нашел такое решение с методом 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); |
Часовой пояс GMT +3, время: 06:31. |