Как получить ключ объекта в js?

А если у меня вот такого типа результат:
Харитоов Иван Олегович: Array[2]
0: Object
1: Object
Как перебрать объекты внутри ФИО?

obj = < 'key': [ 1, 2, 3, 4, 5 ], 0: 'somevalue', 1: 564>keys = Object.keys(obj) for (var i = 0, l1 = keys.length; i < l1; i++) < if ( isNaN(parseInt(keys[i])) ) < for (var j = 0, arr = obj[keys[i]], l2 = arr.length; j < l2; j++) < console.log(arr[j]); >> >
То есть если у вас в объекте есть элементы имеющие и числовые и текстовые ключи, то вы можете выбрать те, у которых ключи текстовые, и работать только с ними.
Object.values()
Метод Object.values() возвращает массив значений перечисляемых свойств объекта в том же порядке что и цикл for. in . Разница между циклом и методом в том, что цикл перечисляет свойства и из цепочки прототипов.
Интерактивный пример
Синтаксис
Object.values(obj)
Параметры
Объект, чьи значения перечисляемых свойств будут возвращены.
Возвращаемое значение
Массив содержащий значения перечисляемых свойств объекта.
Описание
Object.values() возвращает массив, чьи элементы это значения перечисляемых свойств найденных в объекте. Порядок такой же как если пройтись по объекту циклом вручную.
Примеры
var obj = foo: "bar", baz: 42 >; console.log(Object.values(obj)); // ['bar', 42] // Массив как объект var obj = 0: "a", 1: "b", 2: "c" >; console.log(Object.values(obj)); // ['a', 'b', 'c'] // Массив как объект со случайным порядком ключей // Когда мы используем нумерованные ключ, значения возвращаются в порядке возрастания var an_obj = 100: "a", 2: "b", 7: "c" >; console.log(Object.values(an_obj)); // ['b', 'c', 'a'] // getFoo неперечисляемое свойство var my_obj = Object.create( >, getFoo: value: function () return this.foo; >, >, >, ); my_obj.foo = "bar"; console.log(Object.values(my_obj)); // ['bar'] // Аргумент, не являющийся объектом, будет приведён к объекту console.log(Object.values("foo")); // ['f', 'o', 'o']
Полифил
Для добавления совместимости Object.values со старым окружением, которое не поддерживает нативно его, вы можете найти полифил здесь tc39/proposal-object-values-entries или в es-shims/Object.values репозитории.
Спецификации
| Specification |
|---|
| ECMAScript Language Specification # sec-object.values |
Совместимость с браузерами
BCD tables only load in the browser
Смотрите также
- Перечисляемость и принадлежность свойств
- Object.keys()
- Object.entries() Экспериментальная возможность
- Object.prototype.propertyIsEnumerable()
- Object.create()
- Object.getOwnPropertyNames()
Found a content problem with this page?
- Edit the page on GitHub.
- Report the content issue.
- View the source on GitHub.
This page was last modified on 7 авг. 2023 г. by MDN contributors.
Your blueprint for a better internet.
как получить ключи объекта js
Для получения массива ключей объекта служит метод Object.keys() . В качестве аргумента передаётся объект, ключи которого мы хотим получить.
const obj = 1: 'a', 2: 'b', 3: 'c', 4: 'd', anotherKey: 'some value', >; const keys = Object.keys(obj); console.log(keys); // => [ '1', '2', '3', '4', 'anotherKey' ]
Перебор объекта в JavaScript
В этом посте мы рассмотрим как в JS перебрать объект с помощью цикла и методов. Методы перебора массива мы рассматривали в этой статье.
Мы рассмотрим следующие варианты:
- for in — цикл по объекту. Можно получить и ключ и значение.
- Object.entries() — метод, возвращающий массив пар [key, value]
- Object.keys() — метод, который возвращает массив ключей [key1, key2]
- Object.values() — метод, который возвращает массив значений [value1, value2]
For … in
Начнем с простого примера, допустим у нас есть объект user
const user =
Если мы знаем все свойства этого объекта, то мы могли бы их просто вывести так:
console.log(user.name); console.log(user.age); // и т.д.
Но что, если мы не знаем сколько у него сейчас свойств и какие свойства есть, а нам нужно их все отобразить. В данном случае нам и понадобиться цикл для прохода по этому объекту
for (let key in user) < console.log(key + ' - ' + user[key]); >// В консоли мы увидим следующее: // name - John // age - 30 // position - manager // salary - 5000
В переменную key мы получаем на каждой итерации ключ, а для того чтобы получить значение по данному ключу, мы используем user[key] .
Обратите внимание, что мы не можем написать просто user.key , т.к. у нашего объекта нет такого свойства, key — это переменная, которую мы задали для прохода по объекту в цикле (кстати, мы также можем сделать ее const вместо let , это не имеет значения). Поэтому мы обращаемся именно через квадратные скобки []
В другом примере, рассмотрим вариант когда нам те же данные нужно вывести и добавить к определeнному div
Еще пару моментов, которые касаются этого цикла. Первое, сортировка ключей происходит в порядке их добавления, если ключи это обычные строки. Если ключи это числа (не важно 9 или «9»), тогда они будут выводиться в порядке возрастания. Допустим, есть объект с постами, где ключ это id поста:
const posts = < 2: 'Второй пост', 3: 'Третий пост', 1: 'Первый пост' >console.log(posts); //
Так часто приходится делать в случае, когда вам нужно будет вытащить пост по ID, это будет быстрее чем перебирать весь массив постов.
Второй нюанс, это то что данный цикл перебирает все свойства в цепочке Prototype:
const user = < name: 'John', age: 30 >const user1 = < lastName: 'Doe', role: 'admin' >user1.__proto__ = user; for (let key in user1) < console.log(key); >// Результат в консоли // lasName, role, name, age
Для того, чтобы вывести только свойства конкретного объекта, вам придется воспользоваться методом hasOwnProperty (более детально об этом методе), чтобы убедиться что данное свойство принадлежит только итерируемому объекту:
for (let key in user1) < if (user1.hasOwnProperty(key)) < console.log(key); >> // lastName, role
Object.entries() — пара ключ значение из объекта
Данный метод вернет массив, где каждый элемент массива будет парой [ключ, значение]
const user = < name: 'John', age: 30, role: 'Administrator' >const objEntries = Object.entries(user); console.log(objEntries); // [ ['name', 'John'], ['age', 30], ['role', 'Administrator'] ]
Важно, обратите внимание на вызов данного метода. Нельзя просто написать user.entries()
Из нашего примера видно, что в переменной objEntries будет массив состоящий из 3 других массивов. Дальше в зависимости от того, что вам нужно в результате, вы можете воспользоваться методами массивов.
Object.keys() — получаем ключи из объекта
Данный метод возвращает массив ключей объекта. Если рассмотреть на том же примере с объектом user, то получим:
const objKeys = Object.keys(user); console.log(objKeys); // [ 'name', 'age', 'role' ]
Данный метод можно использовать для определения количества элементов в объекте:
console.log(Object.keys(user).length); // 3
Это упрощенная версия, более детально как проверить количество элементов в объекте или проверить объект на пустоту можете ознакомиться по ссылке.
Object.values() — получаем массив значений из объекта
Как вы уже наверное догадались, данный метод возвращает массив со значениями:
const user = < name: 'John', age: 30, role: 'Administrator' >const objValues = Object.values(user); console.log(objValues); // [ 'John', 30, 'Administrator' ]
Тут думаю ничего сложного, но если остались вопросы пишите в комментариях.
Ваши вопросы и комментарии:
Свежие записи
- MySQL IS NULL — проверка поля на NULL
- MySQL LIKE — поиск по паттерну
- Between MySQL — оператор для выборки по диапазону значений
- MySQL IN и NOT IN — несколько условий
- MySQL WHERE — синтаксис и примеры
Копирование материалов разрешено только с ссылкой на источник Web-Dev.guru
2024 © Все права защищены.