Skip to content

Commit

Permalink
update(JS): web/javascript/reference/global_objects/object/keys
Browse files Browse the repository at this point in the history
  • Loading branch information
undead404 authored and AdriandeCita committed Nov 27, 2022
1 parent 8852a8f commit 82ff588
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 24 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ browser-compat: javascript.builtins.Object.keys

{{JSRef}}

Метод **`Object.keys()`** (ключі) повертає масив, що складається з **імен** власних перелічуваних властивостей переданого об'єкта. Порядок цих імен збігається з порядком перебирання цих властивостей звичайним циклом.
Метод **`Object.keys()`** (ключі) повертає масив, що складається з імен власних перелічуваних властивостей переданого об'єкта, що мають рядкові ключі.

{{EmbedInteractiveExample("pages/js/object-keys.html")}}

Expand All @@ -26,32 +26,34 @@ Object.keys(obj)
### Параметри

- `obj` (об'єкт)
- : Об'єкт, чиї власні перелічувані властивості буде повернуто в результаті.
- : Об'єкт.

### Повернене значення

Масив рядків, що позначають імена всі перелічуваних властивостей даного об'єкта.
Масив рядків, що позначають ключі власних перелічуваних властивостей даного об'єкта, що мають рядкові ключі.

## Опис

Метод `Object.keys()` повертає масив, чиї елементи — рядки, які відповідають перелічуваним властивостям, що знаходяться безпосередньо на об'єкті `object`. Порядок властивостей такий самий, як і під час перебирання властивостей об'єкта в циклі самотужки.
`Object.keys()` повертає масив, чиї елементи — рядки, які відповідають перелічуваним властивостям, що знаходяться безпосередньо на об'єкті `object`. Порядок обробки такий само, як в циклі {{jsxref("Statements/for...in", "for...in")}}, окрім того, що цикл `for...in` перелічує також властивості із ланцюжка прототипів. Порядок масиву, поверненого `Object.keys()`, такий само, як порядок обробки в циклі {{jsxref("Statements/for...in", "for...in")}}.

Коли потрібні значення властивостей, слід натомість використовувати {{jsxref("Object.values()")}}. Коли потрібні і ключі, і значення властивостей, слід натомість використовувати {{jsxref("Object.entries()")}}.

## Приклади

### Застосування Object.keys
### Застосування Object.keys()

```js
// простий масив
const arr = ['a', 'b', 'c'];
console.log(Object.keys(arr)); // виводить: ['0', '1', '2']
const arr = ["a", "b", "c"];
console.log(Object.keys(arr)); // ['0', '1', '2']

// масивоподібний об'єкт
const obj = { 0: 'a', 1: 'b', 2: 'c' };
console.log(Object.keys(obj)); // виводить: ['0', '1', '2']
const obj = { 0: "a", 1: "b", 2: "c" };
console.log(Object.keys(obj)); // ['0', '1', '2']

// масивоподібний об'єкт з випадковим порядком ключів
const anObj = { 100: 'a', 2: 'b', 7: 'c' };
console.log(Object.keys(anObj)); // виводить: ['2', '7', '100']
const anObj = { 100: "a", 2: "b", 7: "c" };
console.log(Object.keys(anObj)); // ['2', '7', '100']

// getFoo — це неперелічувана властивість
const myObj = Object.create(
Expand All @@ -62,28 +64,27 @@ const myObj = Object.create(
return this.foo;
},
},
},
}
);
myObj.foo = 1;
console.log(Object.keys(myObj)); // виводить: ['foo']
console.log(Object.keys(myObj)); // ['foo']
```

Якщо потрібні _всі_ властивості, включно з неперелічуваними, — зверніть увагу на {{jsxref("Object.getOwnPropertyNames()")}}.

### Приведення необ'єктів

В ES5, якщо аргумент цього методу був необ'єктного типу (примітив), це призводило до винятку {{jsxref("TypeError")}}.
### Застосування Object.keys() на примітивах

Від ES2015 і далі – необ'єктні аргументи приводяться до об'єктного типу.
Необ'єктні аргументи [зводяться до об'єктів](/uk/docs/Web/JavaScript/Reference/Global_Objects/Object#zvedennia-do-obiekta). Лише рядки можуть мати власні перелічувані властивості, коли решта примітивів повертають порожній масив.

```js
// В ES5
Object.keys('foo'); // TypeError: "foo" is not an object

// В ES2015+
Object.keys('foo'); // ["0", "1", "2"]
// Рядки мають власні перелічувані властивості у вигляді індексів
console.log(Object.keys("foo")); // ['0', '1', '2']
// Решта примітивів не має власних властивостей
console.log(Object.keys(100)); // []
```

> **Примітка:** В середовищі ES5 передача необ'єкта в `Object.keys()` призводить до викидання {{jsxref("TypeError")}}.
## Специфікації

{{Specifications}}
Expand All @@ -96,8 +97,9 @@ Object.keys('foo'); // ["0", "1", "2"]

- [Поліфіл для `Object.keys` у `core-js`](https://github.com/zloirock/core-js#ecmascript-object)
- [Перелічуваність і власність властивостей](/uk/docs/Web/JavaScript/Enumerability_and_ownership_of_properties)
- {{jsxref("Object.entries()")}}
- {{jsxref("Object.values()")}}
- {{jsxref("Object.prototype.propertyIsEnumerable()")}}
- {{jsxref("Object.create()")}}
- {{jsxref("Object.getOwnPropertyNames()")}}
- {{jsxref("Object.values()")}}
- {{jsxref("Object.entries()")}}
- {{jsxref("Map.prototype.keys()")}}
1 change: 1 addition & 0 deletions uk_spelling_additions.txt
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,7 @@
незв'язування
неітеровані
неітерованою
необ'єкта
необ'єктів
необ'єктні
необ'єктного
Expand Down

0 comments on commit 82ff588

Please sign in to comment.