Объекты в Javascript — это контейнеры для именованных значений, называемых свойствами или методами. Объект содержит ключи и значения. Для доступа к ключам объекта используйте метод keys (). Метод keys () в JavaScript используется для возврата перечислимых свойств простого массива.
- Javascript Object.keys ()
- Синтаксис
- Аргументы
- Возвращаемое значение
- Неперечислимые свойства
- Как получить длину объекта
- Object.keys () и Array.forEach ()
- Сортировка объекта по ключам
- Карта ключей объекта в JavaScript
- Ключи объекта Javascript к массиву
- Доступ к вложенным структуры данных в Javascript
- Polyfill
- Поддержка браузера
- Рекомендуемые сообщения
Javascript Object.keys ()
Object.keys () — это встроенный метод JavaScript, который возвращает массив свойства данного объекта names в том же порядке, что и в стандартном цикле. Метод Object.keys () принимает объект в качестве аргумента и возвращает массив строк, представляющих все перечисляемые свойства данного объекта.
Функция Object keys () используется для возврата массив, элементы которого представляют собой строки, соответствующие перечисляемым свойствам, найденным непосредственно в объекте.
Порядок свойств такой же, как и заданный объектом вручную в цикл применяется к свойствам.
Синтаксис
Object.keys (obj)
Аргументы
Параметр obj является обязательным, и его свойства должны быть возвращены.
Возвращаемое значение
Возвращаемое значение — это массив строк, представляющих все перечислимые свойства данного объекта.
Чтобы выполнить пример Object.keys (), вы определенно установили Node.js на свой компьютер. Если вы еще не установили, установите Node.js и NPM. Это не обязательно, так как вы можете использовать онлайн-редактор или браузер. Но если вы хотите запустить его локально, вам следует установить его.
Давайте рассмотрим простой пример.
//app.jslet obj = {name: 'Krunal', образование: 'ИТ-инженер'}; console.log (Object.keys (obj));
Сохраните файл и запустите файл, набрав приложение узла в терминале.
Итак, в В приведенном выше примере мы получаем массив ключей объекта. То же самое можно сделать и с массивом. Мы также можем получить ключи массива.
//app.jslet objArr = ['apple', 'microsoft', 'amazon', 'алфавит', 'tencent', 'alibaba'] ; console.log (Object.keys (objArr));
Итак, здесь мы определили массив. Мы получим ключи для каждого элемента в возвращаемом массиве.
Неперечислимые свойства
Object.keys () возвращает только ключи перечислимых свойств.
Примером свойства функции объекта является свойство Non-enumerable. Мы не получим ключи от этой собственности.
Давайте рассмотрим пример.
//app.jslet myObj = Object.create ({}, {getName: {value: function () {return this .name;}}}); myObj.name = 'krunal'; консоль. log (Object.keys (myObj));
Как получить длину объекта
Чтобы получить длину объекта в Javascript, используйте свойство length. Все в JavaScript — это объект.
Вы можете определить строковый объект, объект массива или использовать конструктор объекта в JavaScript для создания объекта и добавления свойств и значений. Иногда вам также потребуется знать длину объекта.
//app.jslet unorderedData = {real_name: 'Millie Bobby Brown', character_name: 'Eleven', series: 'Stranger Things'}; console.log (Object.keys (unorderedData). length)
См. следующий вывод.
➜ es git: (master) ✗ node app3➜ es git: (master) ✗
Итак, вот как вычислить или подсчитать, сколько свойств имеет объект JavaScript.
Object.keys () и Array.forEach ()
В JavaScript нет такого метода, как Objects.forEach (). Итак, если мы хотим перебрать все ключи, мы можем использовать функцию Array.forEach ().
См. Следующий пример.
//app. jslet data = {real_name: 'Millie Bobby Brown', character_name: 'Eleven', series: 'Stranger Things'}; Object.keys (data) .forEach (item => {console.log (item);});
См. следующий результат.
Если нам нужны значения объекта, мы можем использовать функцию Object.values ().
Сортировка объекта по ключам
Все методы, которые перебирают ключи свойств, делают это в одном и том же порядке:
- Прежде всего, индексы массива сортируются численно.
- Затем все строковые ключи (не являющиеся индексами) в том порядке, в котором они были созданы.
- Все символы в том порядке, в котором они были созданы.
Если мы хотим отсортировать ключи объекта Javascript (), нам нужно использовать следующую функцию высшего порядка ES6.
- Array.forEach ()
- Массив .Sort ()
См. Следующий пример.
//app.jslet unorderedData = {real_name: 'Millie Bobby Brown', character_name: ' Одиннадцать ', серия:' Очень странные дела '}; console.log (JSON.stringify (unorderedData)); const ordersData = {}; Object.keys (unorderedData) .sort (). ForEach (function (key) {ordersData [key ] = unorderedData [key];}); console.log (JSON.stringify (ordersData));
См. следующий вывод.
➜ es git :( master) ✗ приложение узла {"real_name": "Милли Бобби Браун", "character_name": "Одиннадцать", "series": "Очень странные дела"} {"character_name": "Eleven", "real_name": "Millie Bobby Brown "," series ":" Stranger Things "} ➜ es git: (master) ✗
Как видите, наши ключи объектов () теперь отсортированы по алфавиту.
Карта ключей объекта в JavaScript
Вот как вы можете переименовать ключи объекта с помощью метода Array.map ().
//app.jslet obj = {11: 'одиннадцать', 21: 'mike', 10: 'will'}; Object.keys (obj) .map (function (old_key, index ) {let new_key = old_key * 11; if (old_key! == new_key) {Object.defineProperty (obj, new_key, Object.getOwnPropertyDescriptor (obj, old_key)); удалить obj [old_key];}}); console.log ( obj);
См. вывод.
➜ es git: (master) ✗ node app {'110': 'will', '121': 'eleven ',' 231 ':' mike '} ➜ es git: (master) ✗
Приведенный выше код изменит объект.
Если вы хотите создать новый объект и не изменяйте старый, напишите следующий код.
//app.jslet obj = {11: 'eleven', 21: 'mike', 10: 'will'} ; const newObject = {}; Object.keys (obj) .map (function (old_key, index) {let new_key = old_key * 11; удалить Object.assign (newObject, {[new_key]: obj [old_key]}) [old_key ];}); console.log (новый объект); re>См. вывод.
➜ es git: (master) ✗ node app {'110': 'will', '121': 'eleven', '231' : 'mike'} ➜ es git: (master) ✗Итак, мы изменили ключи объекта. Мы также использовали оператор удаления и метод Object.assign ().
Итак, вот как вы можете изменить ключи объекта javascript.
Неоптимизированный способ будет,
//app.jso [new_key] = o [old_key]; delete o [old_key];Вы можете обернуть работу в функцию и назначьте его прототипу объекта. Можно использовать свободный стиль интерфейса, чтобы сделать несколько переименований потоком.
Object.prototype.renameProperty = function (oldName, newName) {//Ничего не делать, если имена совпадают if (oldName === newName) {вернуть это; }//Проверяем старое имя свойства, чтобы избежать ошибки ReferenceError в строгом режиме. if (this.hasOwnProperty (oldName)) {this [newName] = this [oldName]; удалите это [oldName]; } return this;};Ключи объекта Javascript к массиву
Мы можем получить массив ключей с помощью Object.keys () метод.
//app.jslet obj = {'alpha': 'Google', 'instagram': 'Facebook'}; let keys = Object.keys (obj); console. log (keys);См. вывод.
➜ es git: (master) ✗ node app ['alpha', 'instagram'] ➜ es git: (master) ✗Вы можете использовать
$. map
для библиотеки jquery.Доступ к вложенным структуры данных в Javascript
Вложенная структура данных - это массив или объект, который ссылается на другие массивы или объекты; например, его значения - массивы или объекты.
К таким структурам данных можно получить доступ, последовательно применяя точечную нотацию или нотацию скобок.
Вот пример:
//app. jsconst info = {code: 11, items: [{id: 1, name: 'Eleven'}, {id: 2, name: 'Krunal'}]};Предположим, что мы хотите получить доступ к имени второго элемента.
Вот как мы можем это сделать.
Как мы видим, info - это объект; следовательно, мы можем получить доступ к его свойствам, используя точечную запись. Доступ к свойству элементов осуществляется следующим образом.
info.itemsЗначение представляет собой массив. Чтобы получить доступ ко второму элементу массива, мы должны использовать обозначение скобок:
info.items [1]Это значение является объектом, и мы используем точечная нотация еще раз, чтобы получить доступ к свойству name .
const info_name = info.items [1] .name;В качестве альтернативы, мы могли бы использовать скобки для любых свойств, в основном, если бы имя содержало символы, которые сделали бы его недопустимым для использования точечной нотации.
const item_name = info ['items'] [1] [ 'name'];Polyfill
Если мы хотим добавить совместимую поддержку Object.keys () в более старые среды, которые не поддерживайте его, скопируйте следующий фрагмент.
if (! Object.keys) {Object.keys = (function () {'use strict'; var hasOwnProperty = Object.prototype.hasOwnProperty, hasDontEnumBug =! ({toString: null}). propertyIsEnumerable ('toString'), dontEnums = ['toString', 'toLocaleString', 'valueOf', 'hasOwnProperty', 'isPrototypeOf', 'propertyIsEnumerable', 'construct или '], dontEnumsLength = dontEnums.length; return function (obj) {if (typeof obj! == 'function' && (typeof obj! == 'object' || obj === null)) {throw new TypeError ('Object.keys вызывается на не-объекте' ); } var result = [], prop, i; для (опора в объекте) {если (hasOwnProperty.call (объект, опора)) {результат.push (опора); }} if (hasDontEnumBug) {for (i = 0; iПоддержка браузера
ФУНКЦИЯ | ОСНОВНАЯ ПОДДЕРЖКА |
---|---|
Chrome | 45 |
Edge | Да |
Firefox | 25 |
Internet Explorer | Нет |
Opera | 32 |
Safari | 8 |
Android WebView | Да |
Chrome для Android | Да |
Edge для мобильных устройств | Да |
Firefox для Android | 4 |
Opera Android | Да |
iOS Safari | 8 |
Это все для этого руководства.
Рекомендуемые сообщения
Javascript Object.toString ()
Javascript Object.is ()
Объект Javascript. defineProperty ()
Javascript Object.freeze ()
Javascript Object.values ()
Javascript Object.assign ()
Javascript Object.create ()