beautify 1st part of the tutorial
This commit is contained in:
parent
e3dd2cedc0
commit
6444024a9d
327 changed files with 2358 additions and 1986 deletions
|
@ -11,6 +11,6 @@ var fruits = ["Яблоко", "Груша", "Слива"];
|
|||
То есть, для массива длины `goods`:
|
||||
|
||||
```js
|
||||
var lastItem = goods[goods.length-1]; // получить последний элемент
|
||||
var lastItem = goods[goods.length - 1]; // получить последний элемент
|
||||
```
|
||||
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
Например, для `[-1, 2, 3, -9, 11]`:
|
||||
|
||||
```js
|
||||
//+ no-beautify
|
||||
// Начиная с -1:
|
||||
-1
|
||||
-1 + 2
|
||||
|
@ -41,9 +42,9 @@
|
|||
function getMaxSubSum(arr) {
|
||||
var maxSum = 0; // если совсем не брать элементов, то сумма 0
|
||||
|
||||
for(var i=0; i<arr.length; i++) {
|
||||
for (var i = 0; i < arr.length; i++) {
|
||||
var sumFixedStart = 0;
|
||||
for(var j=i; j<arr.length; j++) {
|
||||
for (var j = i; j < arr.length; j++) {
|
||||
sumFixedStart += arr[j];
|
||||
maxSum = Math.max(maxSum, sumFixedStart);
|
||||
}
|
||||
|
@ -76,8 +77,9 @@ alert( getMaxSubSum([100, -9, 2, -3, 5]) ); // 100
|
|||
```js
|
||||
//+ run
|
||||
function getMaxSubSum(arr) {
|
||||
var maxSum = 0, partialSum = 0;
|
||||
for (var i=0; i<arr.length; i++) {
|
||||
var maxSum = 0,
|
||||
partialSum = 0;
|
||||
for (var i = 0; i < arr.length; i++) {
|
||||
partialSum += arr[i];
|
||||
maxSum = Math.max(maxSum, partialSum);
|
||||
if (partialSum < 0) partialSum = 0;
|
||||
|
|
|
@ -4,8 +4,8 @@
|
|||
//+ run
|
||||
var styles = ["Джаз", "Блюз"];
|
||||
styles.push("Рок-н-Ролл");
|
||||
styles[styles.length-2] = "Классика";
|
||||
styles[styles.length - 2] = "Классика";
|
||||
alert( styles.shift() );
|
||||
styles.unshift( "Рэп", "Регги ");
|
||||
styles.unshift("Рэп", "Регги ");
|
||||
```
|
||||
|
||||
|
|
|
@ -14,6 +14,7 @@
|
|||
Массив в результате каждого шага:
|
||||
|
||||
```js
|
||||
//+ no-beautify
|
||||
Джаз, Блюз
|
||||
Джаз, Блюз, Рок-н-Ролл
|
||||
Джаз, Классика, Рок-н-Ролл
|
||||
|
|
|
@ -4,8 +4,8 @@
|
|||
//+ run
|
||||
var arr = ["Яблоко", "Апельсин", "Груша", "Лимон"];
|
||||
|
||||
var rand = Math.floor( Math.random() * arr.length );
|
||||
var rand = Math.floor(Math.random() * arr.length);
|
||||
|
||||
alert(arr[rand]);
|
||||
alert( arr[rand] );
|
||||
```
|
||||
|
||||
|
|
|
@ -11,6 +11,6 @@ var arr = ["Яблоко", "Апельсин", "Груша", "Лимон"];
|
|||
P.S. Код для генерации случайного целого от `min` to `max` включительно:
|
||||
|
||||
```js
|
||||
var rand = min + Math.floor( Math.random() * (max+1-min) );
|
||||
var rand = min + Math.floor(Math.random() * (max + 1 - min));
|
||||
```
|
||||
|
||||
|
|
|
@ -4,20 +4,20 @@
|
|||
//+ run demo
|
||||
var numbers = [];
|
||||
|
||||
while(true) {
|
||||
while (true) {
|
||||
|
||||
var value = prompt("Введите число", 0);
|
||||
|
||||
|
||||
if (value === "" || value === null || isNaN(value)) break;
|
||||
|
||||
numbers.push(+value);
|
||||
}
|
||||
|
||||
var sum = 0;
|
||||
for(var i=0; i<numbers.length; i++) {
|
||||
for (var i = 0; i < numbers.length; i++) {
|
||||
sum += numbers[i];
|
||||
}
|
||||
|
||||
alert(sum);
|
||||
alert( sum );
|
||||
```
|
||||
|
||||
|
|
|
@ -2,13 +2,13 @@
|
|||
|
||||
```js
|
||||
//+ run
|
||||
var arr = [1,2,3];
|
||||
var arr = [1, 2, 3];
|
||||
|
||||
var arr2 = arr; // (*)
|
||||
arr2[0] = 5;
|
||||
|
||||
alert(arr[0]);
|
||||
alert(arr2[0]);
|
||||
alert( arr[0] );
|
||||
alert( arr2[0] );
|
||||
```
|
||||
|
||||
Код выведет `5` в обоих случаях, так как массив является объектом. В строке `(*)` в переменную `arr2` копируется ссылка на него, а сам объект в памяти по-прежнему один, в нём отражаются изменения, внесенные через `arr2` или `arr`.
|
||||
|
@ -19,6 +19,6 @@ alert(arr2[0]);
|
|||
|
||||
```js
|
||||
var arr2 = [];
|
||||
for(var i=0; i<arr.length; i++) arr2[i] = arr[i];
|
||||
for (var i = 0; i < arr.length; i++) arr2[i] = arr[i];
|
||||
```
|
||||
|
||||
|
|
|
@ -5,14 +5,14 @@
|
|||
Что выведет этот код?
|
||||
|
||||
```js
|
||||
var arr = [1,2,3];
|
||||
var arr = [1, 2, 3];
|
||||
|
||||
var arr2 = arr;
|
||||
arr2[0] = 5;
|
||||
|
||||
*!*
|
||||
alert(arr[0]);
|
||||
alert(arr2[0]);
|
||||
alert( arr[0] );
|
||||
alert( arr2[0] );
|
||||
*/!*
|
||||
```
|
||||
|
||||
|
|
|
@ -3,10 +3,10 @@
|
|||
```js
|
||||
function find(array, value) {
|
||||
|
||||
for(var i=0; i<array.length; i++) {
|
||||
for (var i = 0; i < array.length; i++) {
|
||||
if (array[i] == value) return i;
|
||||
}
|
||||
|
||||
|
||||
return -1;
|
||||
}
|
||||
```
|
||||
|
@ -22,10 +22,10 @@ function find(array, value) {
|
|||
return array.indexOf(value);
|
||||
}
|
||||
|
||||
for(var i=0; i<array.length; i++) {
|
||||
for (var i = 0; i < array.length; i++) {
|
||||
if (array[i] === value) return i;
|
||||
}
|
||||
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
@ -33,14 +33,14 @@ var arr = ["a", -1, 2, "b"];
|
|||
|
||||
var index = find(arr, 2);
|
||||
|
||||
alert(index);
|
||||
alert( index );
|
||||
```
|
||||
|
||||
... Но еще лучшим вариантом было бы определить `find` по-разному в зависимости от поддержки браузером метода `indexOf`:
|
||||
|
||||
```js
|
||||
// создаем пустой массив и проверяем поддерживается ли indexOf
|
||||
if ( [].indexOf ) {
|
||||
if ([].indexOf) {
|
||||
|
||||
var find = function(array, value) {
|
||||
return array.indexOf(value);
|
||||
|
@ -48,10 +48,10 @@ if ( [].indexOf ) {
|
|||
|
||||
} else {
|
||||
var find = function(array, value) {
|
||||
for(var i=0; i<array.length; i++) {
|
||||
for (var i = 0; i < array.length; i++) {
|
||||
if (array[i] === value) return i;
|
||||
}
|
||||
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
Например:
|
||||
|
||||
```js
|
||||
arr = [ "test", 2, 1.5, false ];
|
||||
arr = ["test", 2, 1.5, false];
|
||||
|
||||
find(arr, "test"); // 0
|
||||
find(arr, 2); // 1
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
function filterRange(arr, a, b) {
|
||||
var result = [];
|
||||
|
||||
for(var i=0; i<arr.length; i++) {
|
||||
for (var i = 0; i < arr.length; i++) {
|
||||
if (arr[i] >= a && arr[i] <= b) {
|
||||
result.push(arr[i]);
|
||||
}
|
||||
|
@ -24,6 +24,6 @@ function filterRange(arr, a, b) {
|
|||
var arr = [5, 4, 3, 8, 0];
|
||||
|
||||
var filtered = filterRange(arr, 3, 5);
|
||||
alert(filtered);
|
||||
alert( filtered );
|
||||
```
|
||||
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
// шаг 1
|
||||
var arr = [];
|
||||
|
||||
for (var i=2; i<100; i++) {
|
||||
for (var i = 2; i < 100; i++) {
|
||||
arr[i] = true
|
||||
}
|
||||
|
||||
|
@ -14,27 +14,27 @@ var p = 2;
|
|||
|
||||
do {
|
||||
// шаг 3
|
||||
for (i=2*p; i<100; i+=p) {
|
||||
for (i = 2 * p; i < 100; i += p) {
|
||||
arr[i] = false;
|
||||
}
|
||||
|
||||
// шаг 4
|
||||
for (i=p+1; i<100; i++) {
|
||||
for (i = p + 1; i < 100; i++) {
|
||||
if (arr[i]) break;
|
||||
}
|
||||
|
||||
p = i;
|
||||
} while (p*p < 100); // шаг 5
|
||||
} while (p * p < 100); // шаг 5
|
||||
|
||||
// шаг 6 (готово)
|
||||
// посчитать сумму
|
||||
var sum = 0;
|
||||
for (i=0; i<arr.length; i++) {
|
||||
for (i = 0; i < arr.length; i++) {
|
||||
if (arr[i]) {
|
||||
sum += i;
|
||||
}
|
||||
}
|
||||
|
||||
alert(sum);
|
||||
alert( sum );
|
||||
```
|
||||
|
||||
|
|
|
@ -30,9 +30,9 @@ var fruits = ["Яблоко", "Апельсин", "Слива"];
|
|||
//+ run
|
||||
var fruits = ["Яблоко", "Апельсин", "Слива"];
|
||||
|
||||
alert(fruits[0]); // Яблоко
|
||||
alert(fruits[1]); // Апельсин
|
||||
alert(fruits[2]); // Слива
|
||||
alert( fruits[0] ); // Яблоко
|
||||
alert( fruits[1] ); // Апельсин
|
||||
alert( fruits[2] ); // Слива
|
||||
```
|
||||
|
||||
Элемент можно всегда заменить:
|
||||
|
@ -51,9 +51,9 @@ fruits[3] = 'Лимон'; // теперь ["Яблоко", "Апельсин", "
|
|||
|
||||
```js
|
||||
//+ run
|
||||
var fruits = ["Яблоко", "Апельсин", "Груша"];
|
||||
var fruits = ["Яблоко", "Апельсин", "Груша"];
|
||||
|
||||
alert(fruits.length); // 3
|
||||
alert( fruits.length ); // 3
|
||||
```
|
||||
|
||||
**Через `alert` можно вывести и массив целиком.**
|
||||
|
@ -62,9 +62,9 @@ alert(fruits.length); // 3
|
|||
|
||||
```js
|
||||
//+ run
|
||||
var fruits = ["Яблоко", "Апельсин", "Груша"];
|
||||
var fruits = ["Яблоко", "Апельсин", "Груша"];
|
||||
|
||||
alert(fruits); // Яблоко,Апельсин,Груша
|
||||
alert( fruits ); // Яблоко,Апельсин,Груша
|
||||
```
|
||||
|
||||
**В массиве может храниться любое число элементов любого типа.**
|
||||
|
@ -72,7 +72,7 @@ alert(fruits); // Яблоко,Апельсин,Груша
|
|||
В том числе, строки, числа, объекты, вот например:
|
||||
|
||||
```js
|
||||
//+ run
|
||||
//+ run no-beautify
|
||||
// микс значений
|
||||
var arr = [ 1, 'Имя', { name: 'Петя' }, true ];
|
||||
|
||||
|
@ -108,7 +108,7 @@ var fruits = ["Яблоко", "Апельсин", "Груша"];
|
|||
|
||||
alert( fruits.pop() ); // удалили "Груша"
|
||||
|
||||
alert(fruits); // Яблоко, Апельсин
|
||||
alert( fruits ); // Яблоко, Апельсин
|
||||
```
|
||||
|
||||
</dd>
|
||||
|
@ -121,7 +121,7 @@ var fruits = ["Яблоко", "Апельсин"];
|
|||
|
||||
fruits.push("Груша");
|
||||
|
||||
alert(fruits); // Яблоко, Апельсин, Груша
|
||||
alert( fruits ); // Яблоко, Апельсин, Груша
|
||||
```
|
||||
|
||||
Является полным аналогом `fruits[fruits.length] = ...`.
|
||||
|
@ -139,7 +139,7 @@ var fruits = ["Яблоко", "Апельсин", "Груша"];
|
|||
|
||||
alert( fruits.shift() ); // удалили Яблоко
|
||||
|
||||
alert(fruits); // Апельсин, Груша
|
||||
alert( fruits ); // Апельсин, Груша
|
||||
```
|
||||
|
||||
</dd>
|
||||
|
@ -151,7 +151,7 @@ var fruits = ["Апельсин", "Груша"];
|
|||
|
||||
fruits.unshift('Яблоко');
|
||||
|
||||
alert(fruits); // Яблоко, Апельсин, Груша
|
||||
alert( fruits ); // Яблоко, Апельсин, Груша
|
||||
```
|
||||
|
||||
</dd>
|
||||
|
@ -167,7 +167,7 @@ fruits.push("Апельсин", "Персик");
|
|||
fruits.unshift("Ананас", "Лимон");
|
||||
|
||||
// результат: ["Ананас", "Лимон", "Яблоко", "Апельсин", "Персик"]
|
||||
alert(fruits);
|
||||
alert( fruits );
|
||||
```
|
||||
|
||||
## Внутреннее устройство массива
|
||||
|
@ -184,10 +184,10 @@ function eat(arr) {
|
|||
|
||||
var arr = ["нам", "не", "страшен", "серый", "волк"]
|
||||
|
||||
alert(arr.length); // 5
|
||||
alert( arr.length ); // 5
|
||||
eat(arr);
|
||||
eat(arr);
|
||||
alert(arr.length); // 3, в функцию массив не скопирован, а передана ссылка
|
||||
alert( arr.length ); // 3, в функцию массив не скопирован, а передана ссылка
|
||||
```
|
||||
|
||||
**Ещё одно следствие -- можно присваивать в массив любые свойства.**
|
||||
|
@ -215,7 +215,7 @@ var a = [];
|
|||
a[0] = 0;
|
||||
a[5] = 5;
|
||||
|
||||
alert(a); // 0,,,,,5
|
||||
alert( a ); // 0,,,,,5
|
||||
```
|
||||
|
||||
Эти запятые появляются потому, что алгоритм вывода массива идёт от `0` до `arr.length` и выводит всё через запятую. Отсутствие значений даёт несколько запятых подряд.
|
||||
|
@ -254,7 +254,7 @@ fruits.shift(); // убрать 1 элемент с начала
|
|||
Действия при операции:
|
||||
|
||||
```js
|
||||
fruits.pop(); // убрать 1 элемент с конца
|
||||
fruits.pop(); // убрать 1 элемент с конца
|
||||
```
|
||||
|
||||
<img src="array-pop.svg">
|
||||
|
@ -273,7 +273,7 @@ fruits.pop(); // убрать 1 элемент с конца
|
|||
var arr = ["Яблоко", "Апельсин", "Груша"];
|
||||
|
||||
*!*
|
||||
for (var i=0; i<arr.length; i++) {
|
||||
for (var i = 0; i < arr.length; i++) {
|
||||
alert( arr[i] );
|
||||
}
|
||||
*/!*
|
||||
|
@ -339,13 +339,13 @@ alert(arr.length); // *!*1001*/!*
|
|||
|
||||
```js
|
||||
//+ run
|
||||
var arr = [1, 2, 3, 4, 5];
|
||||
var arr = [1, 2, 3, 4, 5];
|
||||
|
||||
arr.length = 2; // укоротить до 2 элементов
|
||||
alert(arr); // [1, 2]
|
||||
alert( arr ); // [1, 2]
|
||||
|
||||
arr.length = 5; // вернуть length обратно, как было
|
||||
alert(arr[3]); // undefined: значения не вернулись
|
||||
alert( arr[3] ); // undefined: значения не вернулись
|
||||
```
|
||||
|
||||
Самый простой способ очистить массив -- это `arr.length=0`.
|
||||
|
@ -367,12 +367,12 @@ var arr = *!*new Array*/!*("Яблоко", "Груша", "и т.п.");
|
|||
|
||||
```js
|
||||
//+ run
|
||||
var arr = new Array(2, 3);
|
||||
alert(arr[0]); // 2, создан массив [2, 3], всё ок
|
||||
var arr = new Array(2, 3);
|
||||
alert( arr[0] ); // 2, создан массив [2, 3], всё ок
|
||||
|
||||
*!*
|
||||
arr = new Array(2); // создаст массив [2] ?
|
||||
alert(arr[0]); // undefined! у нас массив без элементов, длины 2
|
||||
alert( arr[0] ); // undefined! у нас массив без элементов, длины 2
|
||||
*/!*
|
||||
```
|
||||
|
||||
|
@ -394,7 +394,7 @@ var matrix = [
|
|||
[7, 8, 9]
|
||||
];
|
||||
|
||||
alert(matrix[1][1]); // центральный элемент
|
||||
alert( matrix[1][1] ); // центральный элемент
|
||||
```
|
||||
|
||||
## Внутреннее представление массивов
|
||||
|
@ -428,10 +428,10 @@ alert(matrix[1][1]); // центральный элемент
|
|||
|
||||
```js
|
||||
// предпочтительное
|
||||
var arr = [ элемент1, элемент2... ];
|
||||
var arr = [элемент1, элемент2...];
|
||||
|
||||
// new Array
|
||||
var arr = new Array( элемент1, элемент2...);
|
||||
var arr = new Array(элемент1, элемент2...);
|
||||
```
|
||||
|
||||
При этом `new Array(число)` создаёт массив заданной длины, *без элементов*. Чтобы избежать ошибок, предпочтителен первый синтаксис.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue