Можно ли перебирать свойства в объекте JavaScript? Например, у меня есть объект JavaScript, определенный следующим образом:
myObject.options = {
property1: 'value 1',
property2: 'value 2'
};
Свойства будут динамически добавляться к этому объекту. Есть ли способ просто пройтись и проверить, существует ли свойство? Если да, то как?
javascript
lodash
user3111277
источник
источник
lodash
а не это оправдано только тем, что не требуется раздражающаяhasOwnProperty
проверкаИспользуйте
_.forOwn()
.https://lodash.com/docs#forOwn
Обратите внимание, что
forOwn
проверкиhasOwnProperty
, как обычно, нужно делать при циклическом просмотре свойств объекта.forIn
не выполняет эту проверку.источник
key
это второй параметр, но он имеет смыслДля вашего заявленного желания «проверить, существует ли собственность» вы можете напрямую использовать Lo-Dash
has
.источник
Вы определенно можете сделать это с помощью vanilla JS, как показал stecb, но я думаю, что
each
это лучший ответ на основной вопрос о том, как это сделать с помощью lodash.Как упоминал JohnnyHK, есть также
has
метод, который был бы полезен для данного варианта использования, но, судя по тому, что было заявлено изначально,set
может быть более полезным. Допустим, вы хотели добавить что-то к этому объекту динамически, как вы упомянули:Вот как я бы это сделал, исходя из исходного описания.
источник
В качестве примера возьмем объект ниже
Сначала получите все ключи в obj
а затем прокрутите его
просто собрать все вместе
источник
В ES6 также можно перебирать значения объекта с помощью
for..of
цикла. Однако это не работает прямо из коробки для объектов JavaScript, поскольку вы должны определить свойство @@ iterator для объекта. Это работает следующим образом:for..of
Цикл спрашивает «объект, подлежащие итерациям» (назову его obj1 для объекта итератора. Итерации цикла по obj1 пути последовательного вызова метода следующий () на указанном объекте итератора и используя возвращаемое значение в качестве значения для каждой итерации петли.Вот пример:
Теперь мы можем использовать
for..of
цикл:источник
Было бы полезно понять, почему вам нужно делать это с помощью lodash. Если вы просто хотите проверить, существует ли ключ в объекте, вам не нужен lodash.
Если вы хотите узнать, существует ли значение, вы можете использовать
_.invert
источник