Автор оригинала: Abhilash Kakumanu.
Вступление
Объект в JavaScript – это коллекция Ключевое значение Пары. Один из этих пар клавиш называется объектом Недвижимость Отказ Обе ключи и значения свойств могут иметь любой тип данных – номер, строку, массив, объект и т. Д.
Например:
const dog = { name: "Sandy", age: 3, emoji: "🐶" }
Здесь Имя: «Сэнди»
, Возраст: 3
и emoji: "🐶"
являются свойствами объекта собаки.
В этой статье мы рассмотрим несколько способов удалить свойство от объекта и сравнить их, чтобы понять, какой метод подходит в данном контексте.
Удалить свойство от объекта
Оператор удаления
Семантически правильный способ удалить свойство от объекта – Удалить
оператор. Давайте увидимся в действии:
const student = { name: "Jane", age: 16, score: { maths: 95, science: 90 } } // Deleting a property from an object delete student.age delete student["score"] console.log(student) // {name: "Jane"}
В примере выше, Удалить
Оператор используется для удаления Имя
и Оценка
Свойства от Студент
объект.
Попытка доступа к любому из удаленных свойств вернется undefined
:
console.log(student.age) // undefined
Кроме того, Удалить
Оператор возвращает логическое значение, которое означает, если удаление было успешным:
if (delete student.age) { console.log("Removed 'age' property from student"); } else { console.log("Failed to remove 'age' property, perhaps it doesn't exist?"); }
Если мы запустим этот код, поскольку свойство уже удалена, мы встречаются с:
Failed to remove 'age' property, perhaps it doesn't exist?
Новый объект без собственности
Если мы не хотим изменять объект на месте, но и хотите, чтобы версию ее без определенного свойства мы можем просто генерировать другой объект со всеми теми же свойствами, но и тот.
В случаях, когда мы знаем имя свойства, которое мы хотим удалить, мы можем просто использовать объект Разрушение распаковать объект на 2 части:
- Имущество, которое мы хотим удалить
- Объект, представляющий остальную часть объекта
const car = { brand: "Ford", color: "blue", yearOfManufacturing: 2019 } const {yearOfManufacturing, ...rest} = car; console.log(rest); // {brand: "Ford", color: "blue"}
Однако, если мы не знаем точное имя свойства, которое мы хотим удалить, нам нужно будет сделать фильтр, который проверит, соответствует ли свойству критериям удаления.
Например, давайте удалим все свойства, которые имеют числовое значение:
const developer = { name : "Fred", dailyCoffeIntake : 2, favoriteLanguage : "Haskell", age : 27 }; const keysToKeep = Object.keys(developer).filter( (key)=> { return !Number.isInteger(developer[key]) }); const newDeveloper = {}; keysToKeep.forEach((key)=>{ newDeveloper[key] = developer[key] }); console.log(newDeveloper); // {name: "Fred", favoriteLanguage: "Haskell"}
Функция уменьшения ()
В качестве альтернативы мы можем использовать Уменьшить ()
Способ, который представляет собой встроенный метод массива, который принимает коллекцию и функцию восстановления в качестве аргумента.
Функция затем итерации через все элементы в коллекции и изменяет аккумулятор (который вы можете подумать как временный результат на каждый шаг) и возвращает его. Давайте посмотрим этот метод в действии:
const dog = { name: "Sandy", age: 3, emoji: "🐶" } const newDog = Object.keys(dog).reduce((accumulator, key) => { // Copy all except emoji if(key !== "emoji"){ accumulator[key] = dog[key] } return accumulator }, {}) console.log(newDog) // {name: "Sandy", age: 3}
Заключение
В этой статье мы видели, как удалить свойство от объекта несколькими способами. Мы видели, что используя Удалить
будет мутировать объект. Итак, мы обсудили пару способов – ... отдых
синтаксис и Уменьшить ()
Способ удалить свойство от объекта без мутации его.