Функция Object.keys () в JavaScript

Объекты в Javascript — это контейнеры для именованных значений, называемых свойствами или методами. Объект содержит ключи и значения. Для доступа к ключам объекта используйте метод keys (). Метод keys () в JavaScript используется для возврата перечислимых свойств простого массива.

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 ​​().

Сортировка объекта по ключам

Все методы, которые перебирают ключи свойств, делают это в одном и том же порядке:

  1. Прежде всего, индексы массива сортируются численно.
  2. Затем все строковые ключи (не являющиеся индексами) в том порядке, в котором они были созданы.
  3. Все символы в том порядке, в котором они были созданы.

Если мы хотим отсортировать ключи объекта Javascript (), нам нужно использовать следующую функцию высшего порядка ES6.

  1. Array.forEach ()
  2. Массив .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 ()

Оцените статью
nanomode.ru
Добавить комментарий