From 218934fa2ed1c702a6d3923d2aa2cc6b43c48684 Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Tue, 8 Dec 2020 14:43:23 -0500 Subject: initial commit --- .../global_objects/object/entries/index.html | 157 +++++++++++++++++++++ 1 file changed, 157 insertions(+) create mode 100644 files/uk/web/javascript/reference/global_objects/object/entries/index.html (limited to 'files/uk/web/javascript/reference/global_objects/object/entries/index.html') diff --git a/files/uk/web/javascript/reference/global_objects/object/entries/index.html b/files/uk/web/javascript/reference/global_objects/object/entries/index.html new file mode 100644 index 0000000000..8b555e8991 --- /dev/null +++ b/files/uk/web/javascript/reference/global_objects/object/entries/index.html @@ -0,0 +1,157 @@ +--- +title: Object.entries() +slug: Web/JavaScript/Reference/Global_Objects/Object/entries +tags: + - JavaScript + - Властивість + - Об'єкт + - метод +translation_of: Web/JavaScript/Reference/Global_Objects/Object/entries +--- +
{{JSRef}}
+ +
Метод Object.entries() повертає масив пар ключ-значення особистих, перелічуваних, рядкових властивостей наданого об'єкта, у тому самому порядку, у якому їх надає цикл {{jsxref("Statements/for...in", "for...in")}} (різниця лише в тому, що цикл for-in також перебирає властивості з ланцюга прототипів). Порядок масиву, поверненого Object.entries(), не залежить від того, як був визначений об'єкт. Якщо вам потрібне певне впорядкування, то масив слід відсортувати наступним чином: Object.entries(obj).sort((a, b) => b[0].localeCompare(a[0]));.
+ +
+ +
{{EmbedInteractiveExample("pages/js/object-entries.html")}}
+ + + +

Синтаксис

+ +
Object.entries(obj)
+ +

Параметри

+ +
+
obj
+
Об'єкт, чиї пари ключ-значення особистих перелічуваних рядкових властивостей потрібно повернути.
+
+ +

Значення, що повертається

+ +
Масив пар [key, value] з особистих, перелічуваних, рядкових властивостей даного об'єкта.
+ +

Опис

+ +

Object.entries() повертає масив, чиїми елементами є масиви, що відповідають парам  [key, value] перелічуваних рядкових властивостей, знайдених безпосередньо на об'єкті. Порядок властивостей є таким самим, як і при переборі властивостей об'єкта вручну за допомогою циклу.

+ +

Приклади

+ +
const obj = { foo: 'bar', baz: 42 };
+console.log(Object.entries(obj)); // [ ['foo', 'bar'], ['baz', 42] ]
+
+// подібний до масиву об'єкт
+const obj = { 0: 'а', 1: 'б', 2: 'в' };
+console.log(Object.entries(obj)); // [ ['0', 'а'], ['1', 'б'], ['2', 'в'] ]
+
+// подібний до масиву об'єкт з випадковим порядком ключів
+const anObj = { 100: 'а', 2: 'б', 7: 'в' };
+console.log(Object.entries(anObj)); // [ ['2', 'б'], ['7', 'в'], ['100', 'а'] ]
+
+// getFoo є неперелічуваною властивістю
+const myObj = Object.create({}, { getFoo: { value() { return this.foo; } } });
+myObj.foo = 'bar';
+console.log(Object.entries(myObj)); // [ ['foo', 'bar'] ]
+
+// аргумент, що не є об'єктом, буде приведений до об'єкта
+console.log(Object.entries('foo')); // [ ['0', 'f'], ['1', 'o'], ['2', 'o'] ]
+
+// повертає порожній масив для усіх простих типів, оскільки примітиви не мають особистих властивостей
+console.log(Object.entries(100)); // [ ]
+
+// елегантно перебирає пари ключ-значення
+const obj = { a: 5, b: 7, c: 9 };
+for (const [key, value] of Object.entries(obj)) {
+  console.log(`${key} ${value}`); // "a 5", "b 7", "c 9"
+}
+
+// або, використовуючи додаткові функції масивів
+Object.entries(obj).forEach(([key, value]) => {
+  console.log(`${key} ${value}`); // "a 5", "b 7", "c 9"
+});
+
+ +

Перетворення Object на Map

+ +

Конструктор {{jsxref("Map", "new Map()")}} приймає ітерабельний об'єкт, отриманий через entries. За допомогою Object.entries, ви легко можете перетворити {{jsxref("Object")}} на {{jsxref("Map")}}:

+ +
const obj = { foo: 'bar', baz: 42 };
+const map = new Map(Object.entries(obj));
+console.log(map); // Map { foo: "bar", baz: 42 }
+
+ +

Перебір об'єкта

+ +

Використовуючи деструктуризацію масивів, ви можете легко перебирати об'єкти.

+ +
const obj = { foo: 'bar', baz: 42 };
+Object.entries(obj).forEach(([key, value]) => console.log(`${key}: ${value}`)); // "foo: bar", "baz: 42"
+
+ +

Поліфіл

+ +

Щоб додати підтримку методу Object.entries у старих середовищах, що не підтримують його початково, ви можете використати демонстраційну реалізацію Object.entries у tc39/proposal-object-values-entries (якщо вам не потрібна підтримка IE), поліфіл у репозиторіях es-shims/Object.entries, або можете просто скористатись простим, готовим до розгортання поліфілом, наведеним нижче.

+ +
if (!Object.entries) {
+  Object.entries = function( obj ){
+    var ownProps = Object.keys( obj ),
+        i = ownProps.length,
+        resArray = new Array(i); // попередньо виділити пам'ять під масив
+    while (i--)
+      resArray[i] = [ownProps[i], obj[ownProps[i]]];
+
+    return resArray;
+  };
+}
+
+ +

Для наведеного вище поліфілу, якщо вам потрібна підтримка IE < 9, тоді вам також знадобиться поліфіл Object.keys (як той, що наведений у статті {{jsxref("Object.keys")}})

+ +

Специфікації

+ + + + + + + + + + + + + + + + + + + + + +
СпецифікаціяСтатусКоментар
{{SpecName('ESDraft', '#sec-object.entries', 'Object.entries')}}{{Spec2('ESDraft')}}Початкове визначення.
{{SpecName('ES8', '#sec-object.entries', 'Object.entries')}}{{Spec2('ES8')}}
+ +

Сумісність з веб-переглядачами

+ +
+ + +

{{Compat("javascript.builtins.Object.entries")}}

+
+ +

Див. також

+ + -- cgit v1.2.3-54-g00ecf