aboutsummaryrefslogtreecommitdiff
path: root/files/ru/web/javascript/reference/global_objects/array/length/index.html
blob: 402e1005a441b89329f7e66edb88387bc2632db0 (plain)
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
137
138
139
140
141
142
143
144
145
146
---
title: Array.length
slug: Web/JavaScript/Reference/Global_Objects/Array/length
tags:
  - Array
  - JavaScript
  - Property
translation_of: Web/JavaScript/Reference/Global_Objects/Array/length
---
<div>{{JSRef("Global_Objects", "Array")}}</div>

<h2 id="Summary" name="Summary">Сводка</h2>

<p>Cвойство <strong><code>length</code></strong> объекта, который является экземпляром типа <code>Array</code> , устанавливает или возвращает число элементов этого массива. Значение данного свойства 32-битное безнаковое целое число, которое всегда численно больше чем самый наибольший индекс в массиве.</p>

<pre class="brush: js">var items = ['shoes', 'shirts', 'socks', 'sweaters'];
items.length;

// возвращает 4</pre>

<h2 id="Syntax" name="Syntax">Синтаксис</h2>

<pre class="syntaxbox"><code><var>arr</var>.length</code></pre>

<h2 id="Description" name="Description">Описание</h2>

<p>Свойство <code>length</code> является целым числом с положительным знаком и значением, меньшим чем 2 в степени 32 (2<sup>32</sup>).</p>

<pre class="brush: js">var namelistA = new Array(4294967296); //2 в 32 степени<sup> = </sup>4294967296
var namelistC = new Array(-100) //отрицательная величина

console.log(namelistA.length); //RangeError: Invalid array length
console.log(namelistC.length); //RangeError: Invalid array length



var namelistB = [];
namelistB.length = Math.pow(2,32)-1; //устанавливает длину массива меньше 2 в 32 степени
console.log(namelistB.length);

//4294967295
</pre>

<p>В любой момент вы можете установить свойство <code>length</code> для обрезки массива. Когда вы расширяете массив, изменяя его свойство <code>length</code>, реальное количество элементов в массиве увеличивается; например, если вы установите свойство <code>length</code> в 3, когда оно равно 2, массив будет из 3 элементов, где значение третьего элемента будет равно <code>undefined</code> .</p>

<pre class="brush: js">var arr = [1, 2, 3];
printEntries(arr);

arr.length = 5; // устанавливает длину массива 5.
printEntries(arr);

function printEntries(arr) {
  var goNext = true;
  var entries = arr.entries();
  while (goNext) {
    var result = entries.next();
    if (result.done !== true) {
      console.log(result.value[1]);
      goNext = true;
    } else
      goNext = false;
  }
  console.log('=== printed ===');
}

// 1
// 2
// 3
// === printed ===
// 1
// 2
// 3
// undefined
// undefined
// === printed ===</pre>

<p>Таким образом, свойство <code>length</code> ничего не говорит о количестве определённых значений в массиве. Также смотрите раздел <a href="/ru/docs/Web/JavaScript/Reference/Global_Objects/Array#Relationship_between_length_and_numerical_properties">Взаимосвязь свойства <code>length</code> с числовыми свойствами</a>.</p>

<p>{{js_property_attributes(1, 0, 0)}}</p>

<h2 id="Examples" name="Examples">Примеры</h2>

<h3 id="Example:_Iterating_over_an_array" name="Example:_Iterating_over_an_array">Пример: итерирование по массиву</h3>

<p>В следующем примере массив <code>numbers</code> итерируется до значения свойства <code>length</code>, показывающего, сколько элементов содержит массив. Значение каждого элемента удваивается.</p>

<pre class="brush: js">var numbers = [1, 2, 3, 4, 5];

for (var i = 0; i &lt; numbers.length; i++) {
  numbers[i] *= 2;
}
// Массив numbers теперь равен [2, 4, 6, 8, 10];
</pre>

<h3 id="Example:_Shortening_an_array" name="Example:_Shortening_an_array">Пример: сокращение массива</h3>

<p>Следующий пример сокращает массив <code>statesUS</code> до длины в 50 элементов, если текущая длина массива больше 50.</p>

<pre class="brush: js">if (statesUS.length &gt; 50) {
  statesUS.length = 50;
}
</pre>

<h2 id="Specifications" name="Specifications">Спецификации</h2>

<table class="standard-table">
 <tbody>
  <tr>
   <th scope="col">Спецификация</th>
   <th scope="col">Статус</th>
   <th scope="col">Комментарий</th>
  </tr>
  <tr>
   <td>ECMAScript 1-е издание.</td>
   <td>Стандарт</td>
   <td>Изначальное определение.</td>
  </tr>
  <tr>
   <td>{{SpecName('ES5.1', '#sec-15.4.5.2', 'Array.length')}}</td>
   <td>{{Spec2('ES5.1')}}</td>
   <td></td>
  </tr>
  <tr>
   <td>{{SpecName('ES6', '#sec-properties-of-array-instances-length', 'Array.length')}}</td>
   <td>{{Spec2('ES6')}}</td>
   <td></td>
  </tr>
  <tr>
   <td>{{SpecName('ESDraft', '#sec-properties-of-array-instances-length', 'Array.length')}}</td>
   <td>{{Spec2('ESDraft')}}    </td>
   <td></td>
  </tr>
 </tbody>
</table>

<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2>

<div>
<p>{{Compat("javascript.builtins.Array.length")}}</p>
</div>

<h2 id="See_also" name="See_also">Смотрите также</h2>

<ul>
 <li>{{jsxref("Global_Objects/Array", "Array")}}</li>
</ul>