1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
|
---
title: Array.prototype.push()
slug: Web/JavaScript/Reference/Global_Objects/Array/push
translation_of: Web/JavaScript/Reference/Global_Objects/Array/push
---
<div>{{JSRef}}</div>
<p>Метод <code><strong>push()</strong></code> додає один або більше елементів у кінець масиву та повертає нову довжину масиву.</p>
<div>{{EmbedInteractiveExample("pages/js/array-push.html")}}</div>
<p class="hidden">Джерело цього інтерактивного прикладу зберігається у репозіторії на GitHub. Якщо ви бажаєте залучитися до проекту зі створення інтерактивних прикладів, будь ласка, скопіюйте це посилання <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> та надішліть нам pull request.</p>
<h2 id="Синтаксис">Синтаксис</h2>
<pre class="syntaxbox"><var>arr</var>.push(<var>element1</var>[, ...[, <var>elementN</var>]])</pre>
<h3 id="Параметри">Параметри</h3>
<dl>
<dt><code>element<em>N</em></code></dt>
<dd>Елементи, що додаються у кінець масиву.</dd>
</dl>
<h3 id="Повернене_значення">Повернене значення</h3>
<p>Нова {{jsxref("Array.length", "length")}} властивість об'єкта, на якому був визваний цей метод.</p>
<h2 id="Опис">Опис</h2>
<p>Метод <code>push</code> додає значення у масив.</p>
<p><code>push</code> було навмисно створено загальним методом. Він може використовуватися з {{jsxref("Function.call", "call()")}} або {{jsxref("Function.apply", "apply()")}} на об'єктах, подібних до масивів. Метод <code>push</code> спирається на властивість <code>length</code>, щоб розуміти, з якого місця починати додавання заданих значень. Якщо властивість <code>length</code> неможливо перетворити на число, використовується індекс рівний 0. До цього також належить випадок, коли властивості <code>length</code> взагалі не існує, y цьому разі <code>length</code> також буде створено.</p>
<p>Хоча {{jsxref("Global_Objects/String", "strings", "", 1)}} - це найближчі, масивоподібні об'єкти, з ними неможливо використовувати цей метод, оскільки рядки є незмінними. Аналогічно до найближчого, масивоподібного об'єкта {{jsxref("Functions/arguments", "arguments", "", 1)}}.</p>
<h2 id="Приклади">Приклади</h2>
<h3 id="Додавання_елементів_у_масив">Додавання елементів у масив</h3>
<p>Наступний приклад створює <code>sports</code> масив з двома елементами, потім у нього додаються еще два елементи. Змінна <code>total</code> містить нову довжину масиву.</p>
<pre class="brush: js">var sports = ['soccer', 'baseball'];
var total = sports.push('football', 'swimming');
console.log(sports); // ['soccer', 'baseball', 'football', 'swimming']
console.log(total); // 4
</pre>
<h3 id="Поєднання_двох_масивів">Поєднання двох масивів</h3>
<p>Цей приклад використовує {{jsxref("Function.apply", "apply()")}} для того, щоб запушити усі елементи з другого масиву.</p>
<p><em>Не</em> використовуйте цей метод, якщо другий масив (<code>moreVegs</code> у цьому прикладі) занадто великий, оскільки максимальна кількість параметрів, які може вмістити одна функція обмежена, як доводить це практика. Дивиться {{jsxref("Function.apply", "apply()")}} для отримання більш докладної інформації.</p>
<pre class="brush: js">var vegetables = ['parsnip', 'potato'];
var moreVegs = ['celery', 'beetroot'];
// Merge the second array into the first one
// Equivalent to vegetables.push('celery', 'beetroot');
Array.prototype.push.apply(vegetables, moreVegs);
console.log(vegetables); // ['parsnip', 'potato', 'celery', 'beetroot']
</pre>
<h3 id="Використання_об'єкта_у_масивоподібний_спосіб">Використання об'єкта у масивоподібний спосіб</h3>
<p>Як зазначено вище, <code>push</code> було навмисно створено загаліним методом, і це може зіграти нам на користь. <code>Array.prototype.push</code> добре працює на об'єктах, як це показує наш приклад. Зауважте, що ми не створюємо масив для зберігання колекції об'єктів. Натомість ми зберігаємо колекцію у самому об'єкті та використовуємо метод <code>call</code> на <code>Array.prototype.push</code>, щоб змусити його думати, начебто ми використовуємо його на масиві, і це працює, завдяки тому, що JavaScript дозволяє нам встановлювати контекст використання, як нам зручно.</p>
<pre class="brush: js">var obj = {
length: 0,
addElem: function addElem(elem) {
// obj.length is automatically incremented
// every time an element is added.
[].push.call(this, elem);
}
};
// Let's add some empty objects just to illustrate.
obj.addElem({});
obj.addElem({});
console.log(obj.length);
// → 2
</pre>
<p>Зверніть увагу, що <code>obj</code> хоч і не є масивом, метод <code>push</code> успішно збільшив його властивість <code>length</code> так само, наче б ми мали справу зі справжнім масивом.</p>
<h2 id="Специфікації">Специфікації</h2>
<table class="standard-table">
<tbody>
<tr>
<th scope="col">Специфікації</th>
<th scope="col">Статус</th>
<th scope="col">Коментар</th>
</tr>
<tr>
<td>{{SpecName('ES3')}}</td>
<td>{{Spec2('ES3')}}</td>
<td>Початкове визначення. Реалізоване в JavaScript 1.2.</td>
</tr>
<tr>
<td>{{SpecName('ES5.1', '#sec-15.4.4.7', 'Array.prototype.push')}}</td>
<td>{{Spec2('ES5.1')}}</td>
<td></td>
</tr>
<tr>
<td>{{SpecName('ES6', '#sec-array.prototype.push', 'Array.prototype.push')}}</td>
<td>{{Spec2('ES6')}}</td>
<td></td>
</tr>
<tr>
<td>{{SpecName('ESDraft', '#sec-array.prototype.push', 'Array.prototype.push')}}</td>
<td>{{Spec2('ESDraft')}}</td>
<td></td>
</tr>
</tbody>
</table>
<h2 id="Сумісність_з_браузерами">Сумісність з браузерами</h2>
<div>
<div class="hidden">Таблиця сумісності на цій сторінці береться зі струкрутованих даних. кщо ви бажаєте залучитися до створення цих даних, будь ласка, перегляньте <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> та надішліть нам pull request.</div>
<p>{{Compat("javascript.builtins.Array.push")}}</p>
</div>
<h2 id="Дивиться_також">Дивиться також</h2>
<ul>
<li>{{jsxref("Array.prototype.pop()")}}</li>
<li>{{jsxref("Array.prototype.shift()")}}</li>
<li>{{jsxref("Array.prototype.unshift()")}}</li>
<li>{{jsxref("Array.prototype.concat()")}}</li>
</ul>
|