ÐбÑекÑÑ Ð¿Ð¾Ð·Ð²Ð¾Ð»ÑÑÑ Ñ ÑаниÑÑ Ð´Ð°Ð½Ð½Ñе Ñо ÑÑÑоковÑми клÑÑами. ÐÑо замеÑаÑелÑно.
Ðо доволÑно ÑаÑÑо Ð¼Ñ Ð¿Ð¾Ð½Ð¸Ð¼Ð°ÐµÐ¼, ÑÑо нам Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð° ÑпоÑÑдоÑÐµÐ½Ð½Ð°Ñ ÐºÐ¾Ð»Ð»ÐµÐºÑÐ¸Ñ Ð´Ð°Ð½Ð½ÑÑ , в коÑоÑой пÑиÑÑÑÑÑвÑÑÑ 1-й, 2-й, 3-й ÑлеменÑÑ Ð¸ Ñ.д. ÐапÑимеÑ, она понадобиÑÑÑ Ð½Ð°Ð¼ Ð´Ð»Ñ Ñ ÑÐ°Ð½ÐµÐ½Ð¸Ñ ÑпиÑка Ñего-либо: полÑзоваÑелей, ÑоваÑов, ÑлеменÑов HTML и Ñ.д.
Ð ÑÑом ÑлÑÑае иÑполÑзоваÑÑ Ð¾Ð±ÑÐµÐºÑ Ð½ÐµÑдобно, Ñак как он не пÑедоÑÑавлÑÐµÑ Ð¼ÐµÑодов ÑпÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ð¾ÑÑдком ÑлеменÑов. ÐÑ Ð½Ðµ можем вÑÑавиÑÑ Ð½Ð¾Ð²Ð¾Ðµ ÑвойÑÑво «междÑ» Ñже ÑÑÑеÑÑвÑÑÑими. ÐбÑекÑÑ Ð¿ÑоÑÑо не пÑедназнаÑÐµÐ½Ñ Ð´Ð»Ñ ÑÑÐ¸Ñ Ñелей.
ÐÐ»Ñ Ñ
ÑÐ°Ð½ÐµÐ½Ð¸Ñ ÑпоÑÑдоÑеннÑÑ
коллекÑий ÑÑÑеÑÑвÑÐµÑ Ð¾ÑÐ¾Ð±Ð°Ñ ÑÑÑÑкÑÑÑа даннÑÑ
, коÑоÑÐ°Ñ Ð½Ð°Ð·ÑваеÑÑÑ Ð¼Ð°ÑÑив, Array.
ÐбÑÑвление
СÑÑеÑÑвÑÐµÑ Ð´Ð²Ð° ваÑианÑа ÑинÑакÑиÑа Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð¿ÑÑÑого маÑÑива:
let arr = new Array();
let arr = [];
ÐÑакÑиÑеÑки вÑегда иÑполÑзÑеÑÑÑ Ð²ÑоÑой ваÑÐ¸Ð°Ð½Ñ ÑинÑакÑиÑа. Ð ÑÐºÐ¾Ð±ÐºÐ°Ñ Ð¼Ñ Ð¼Ð¾Ð¶ÐµÐ¼ ÑказаÑÑ Ð½Ð°ÑалÑнÑе знаÑÐµÐ½Ð¸Ñ ÑлеменÑов:
let fruits = ["Яблоко", "ÐпелÑÑин", "Слива"];
ÐлеменÑÑ Ð¼Ð°ÑÑива нÑмеÑÑÑÑÑÑ, наÑÐ¸Ð½Ð°Ñ Ñ Ð½ÑлÑ.
ÐÑ Ð¼Ð¾Ð¶ÐµÐ¼ полÑÑиÑÑ ÑлеменÑ, Ñказав его Ð½Ð¾Ð¼ÐµÑ Ð² квадÑаÑнÑÑ ÑÐºÐ¾Ð±ÐºÐ°Ñ :
let fruits = ["Яблоко", "ÐпелÑÑин", "Слива"];
alert( fruits[0] ); // Яблоко
alert( fruits[1] ); // ÐпелÑÑин
alert( fruits[2] ); // Слива
ÐÑ Ð¼Ð¾Ð¶ÐµÐ¼ замениÑÑ ÑлеменÑ:
fruits[2] = 'ÐÑÑÑа'; // ÑепеÑÑ ["Яблоко", "ÐпелÑÑин", "ÐÑÑÑа"]
â¦Ðли добавиÑÑ Ð½Ð¾Ð²Ñй к ÑÑÑеÑÑвÑÑÑÐµÐ¼Ñ Ð¼Ð°ÑÑивÑ:
fruits[3] = 'Ðимон'; // ÑепеÑÑ ["Яблоко", "ÐпелÑÑин", "ÐÑÑÑа", "Ðимон"]
ÐбÑее ÑиÑло ÑлеменÑов маÑÑива ÑодеÑжиÑÑÑ Ð² его ÑвойÑÑве length:
let fruits = ["Яблоко", "ÐпелÑÑин", "Слива"];
alert( fruits.length ); // 3
ÐÑвеÑÑи маÑÑив Ñеликом можно пÑи помоÑи alert.
let fruits = ["Яблоко", "ÐпелÑÑин", "Слива"];
alert( fruits ); // Яблоко, ÐпелÑÑин, Слива
РмаÑÑиве могÑÑ Ñ ÑаниÑÑÑÑ ÑлеменÑÑ Ð»Ñбого Ñипа.
ÐапÑимеÑ:
// ÑазнÑе ÑÐ¸Ð¿Ñ Ð·Ð½Ð°Ñений
let arr = [ 'Яблоко', { name: 'Ðжон' }, true, function() { alert('пÑивеÑ'); } ];
// полÑÑиÑÑ ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ñ Ð¸Ð½Ð´ÐµÐºÑом 1 (обÑекÑ) и заÑем показаÑÑ ÐµÐ³Ð¾ ÑвойÑÑво
alert( arr[1].name ); // Ðжон
// полÑÑиÑÑ ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ñ Ð¸Ð½Ð´ÐµÐºÑом 3 (ÑÑнкÑиÑ) и вÑполниÑÑ ÐµÑ
arr[3](); // пÑивеÑ
СпиÑок ÑлеменÑов маÑÑива, как и ÑпиÑок ÑвойÑÑв обÑекÑа, Ð¼Ð¾Ð¶ÐµÑ Ð¾ÐºÐ°Ð½ÑиваÑÑÑÑ Ð·Ð°Ð¿ÑÑой:
let fruits = [
"Яблоко",
"ÐпелÑÑин",
"Слива",
];
«ÐиÑÑÑÐ°Ñ Ð·Ð°Ð¿ÑÑаÑ» ÑпÑоÑÐ°ÐµÑ Ð¿ÑоÑеÑÑ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ/ÑÐ´Ð°Ð»ÐµÐ½Ð¸Ñ ÑлеменÑов, Ñак как вÑе ÑÑÑоки ÑÑановÑÑÑÑ Ð¸Ð´ÐµÐ½ÑиÑнÑми.
ÐолÑÑение поÑÐ»ÐµÐ´Ð½Ð¸Ñ ÑлеменÑов пÑи помоÑи «at»
ÐопÑÑÑим, нам нÑжен поÑледний ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ð¼Ð°ÑÑива.
ÐекоÑоÑÑе ÑзÑки пÑогÑаммиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾Ð·Ð²Ð¾Ð»ÑÑÑ Ð¸ÑполÑзоваÑÑ Ð¾ÑÑиÑаÑелÑнÑе индекÑÑ Ð´Ð»Ñ Ñой же Ñели, как-Ñо Ñак: fruits[-1].
Ðднако, в JavaScript ÑÐ°ÐºÐ°Ñ Ð·Ð°Ð¿Ð¸ÑÑ Ð½Ðµ ÑÑабоÑаеÑ. ÐÑ ÑезÑлÑÑаÑом бÑÐ´ÐµÑ undefined, поÑколÑÐºÑ Ð¸Ð½Ð´ÐµÐºÑ Ð² квадÑаÑнÑÑ
ÑкобкаÑ
понимаеÑÑÑ Ð±ÑквалÑно.
ÐÑ Ð¼Ð¾Ð¶ÐµÐ¼ Ñвно вÑÑиÑлиÑÑ Ð¸Ð½Ð´ÐµÐºÑ Ð¿Ð¾Ñледнего ÑлеменÑа, а заÑем полÑÑиÑÑ Ðº Ð½ÐµÐ¼Ñ Ð´Ð¾ÑÑÑп Ð²Ð¾Ñ Ñак: fruits[fruits.length - 1].
let fruits = ["Apple", "Orange", "Plum"];
alert( fruits[fruits.length-1] ); // Plum
Ðемного гÑомоздко, не Ñак ли? Ðам нÑжно Ð´Ð²Ð°Ð¶Ð´Ñ Ð½Ð°Ð¿Ð¸ÑаÑÑ Ð¸Ð¼Ñ Ð¿ÐµÑеменной.
Ð ÑÑаÑÑÑÑ, еÑÑÑ Ð±Ð¾Ð»ÐµÐµ коÑоÑкий ÑинÑакÑиÑ: fruits.at(-1):
let fruits = ["Apple", "Orange", "Plum"];
// Ñо же Ñамое, ÑÑо и fruits[fruits.length-1]
alert( fruits.at(-1) ); // Plum
ÐÑÑгими Ñловами, arr.at(i):
- ÑÑо Ñовно Ñо же Ñамое, ÑÑо и
arr[i], еÑлиi >= 0. - Ð´Ð»Ñ Ð¾ÑÑиÑаÑелÑнÑÑ
знаÑений
i, он оÑÑÑÑÐ¿Ð°ÐµÑ Ð¾Ñ ÐºÐ¾Ð½Ñа маÑÑива.
ÐеÑÐ¾Ð´Ñ pop/push, shift/unshift
ÐÑеÑÐµÐ´Ñ â один из ÑамÑÑ ÑаÑпÑоÑÑÑанÑннÑÑ Ð²Ð°ÑианÑов пÑÐ¸Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¼Ð°ÑÑива. РоблаÑÑи компÑÑÑеÑнÑÑ Ð½Ð°Ñк Ñак назÑваеÑÑÑ ÑпоÑÑдоÑÐµÐ½Ð½Ð°Ñ ÐºÐ¾Ð»Ð»ÐµÐºÑÐ¸Ñ ÑлеменÑов, поддеÑживаÑÑÐ°Ñ Ð´Ð²Ð° вида опеÑаÑий:
pushдобавлÑÐµÑ ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ð² конеÑ.shiftÑдалÑÐµÑ ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ð² наÑале, ÑÐ´Ð²Ð¸Ð³Ð°Ñ Ð¾ÑеÑедÑ, Ñак ÑÑо вÑоÑой ÑÐ»ÐµÐ¼ÐµÐ½Ñ ÑÑановиÑÑÑ Ð¿ÐµÑвÑм.
ÐаÑÑÐ¸Ð²Ñ Ð¿Ð¾Ð´Ð´ÐµÑживаÑÑ Ð¾Ð±Ðµ опеÑаÑии.
Ðа пÑакÑике Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ÑÑÑ Ð² ÑÑом Ð²Ð¾Ð·Ð½Ð¸ÐºÐ°ÐµÑ Ð¾ÑÐµÐ½Ñ ÑаÑÑо. ÐапÑимеÑ, оÑеÑÐµÐ´Ñ ÑообÑений, коÑоÑÑе надо показаÑÑ Ð½Ð° ÑкÑане.
СÑÑеÑÑвÑÐµÑ Ð¸ дÑÑгой ваÑÐ¸Ð°Ð½Ñ Ð¿ÑÐ¸Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ð¼Ð°ÑÑивов â ÑÑÑÑкÑÑÑа даннÑÑ , назÑÐ²Ð°ÐµÐ¼Ð°Ñ ÑÑек.
Ðна поддеÑÐ¶Ð¸Ð²Ð°ÐµÑ Ð´Ð²Ð° вида опеÑаÑий:
pushдобавлÑÐµÑ ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ð² конеÑ.popÑдалÑÐµÑ Ð¿Ð¾Ñледний ÑлеменÑ.
Таким обÑазом, новÑе ÑлеменÑÑ Ð²Ñегда добавлÑÑÑÑÑ Ð¸Ð»Ð¸ ÑдалÑÑÑÑÑ Ð¸Ð· «конÑа».
ÐÑимеÑом ÑÑека обÑÑно ÑлÑÐ¶Ð¸Ñ ÐºÐ¾Ð»Ð¾Ð´Ð° каÑÑ: новÑе каÑÑÑ ÐºÐ»Ð°Ð´ÑÑÑÑ Ð½Ð°Ð²ÐµÑÑ Ð¸ беÑÑÑÑÑ Ñоже ÑвеÑÑ Ñ:
ÐаÑÑÐ¸Ð²Ñ Ð² JavaScript могÑÑ ÑабоÑаÑÑ Ð¸ как оÑеÑедÑ, и как ÑÑек. ÐÑ Ð¼Ð¾Ð¶ÐµÐ¼ добавлÑÑÑ/ÑдалÑÑÑ ÑлеменÑÑ ÐºÐ°Ðº в наÑало, Ñак и в ÐºÐ¾Ð½ÐµÑ Ð¼Ð°ÑÑива.
РкомпÑÑÑеÑнÑÑ Ð½Ð°ÑÐºÐ°Ñ ÑÑÑÑкÑÑÑа даннÑÑ , делаÑÑÐ°Ñ ÑÑо возможнÑм, назÑваеÑÑÑ Ð´Ð²ÑÑÑоÑоннÑÑ Ð¾ÑеÑедÑ.
ÐеÑодÑ, ÑабоÑаÑÑие Ñ ÐºÐ¾Ð½Ñом маÑÑива:
pop-
УдалÑÐµÑ Ð¿Ð¾Ñледний ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ð¸Ð· маÑÑива и возвÑаÑÐ°ÐµÑ ÐµÐ³Ð¾:
let fruits = ["Яблоко", "ÐпелÑÑин", "ÐÑÑÑа"]; alert( fruits.pop() ); // ÑдалÑем "ÐÑÑÑа" и вÑводим его alert( fruits ); // Яблоко, ÐпелÑÑинÐ
fruits.pop()иfruits.at(-1)возвÑаÑаÑÑ Ð¿Ð¾Ñледний ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ð¼Ð°ÑÑива, ноfruits.pop()Ñакже изменÑÐµÑ Ð¼Ð°ÑÑив, ÑдалÑÑ ÐµÐ³Ð¾. push-
ÐобавлÑÐµÑ ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ð² ÐºÐ¾Ð½ÐµÑ Ð¼Ð°ÑÑива:
let fruits = ["Яблоко", "ÐпелÑÑин"]; fruits.push("ÐÑÑÑа"); alert( fruits ); // Яблоко, ÐпелÑÑин, ÐÑÑÑаÐÑзов
fruits.push(...)ÑавнознаÑенfruits[fruits.length] = ....
ÐеÑодÑ, ÑабоÑаÑÑие Ñ Ð½Ð°Ñалом маÑÑива:
shift-
УдалÑÐµÑ Ð¸Ð· маÑÑива пеÑвÑй ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ð¸ возвÑаÑÐ°ÐµÑ ÐµÐ³Ð¾:
let fruits = ["Яблоко", "ÐпелÑÑин", "ÐÑÑÑа"]; alert( fruits.shift() ); // ÑдалÑем Яблоко и вÑводим его alert( fruits ); // ÐпелÑÑин, ÐÑÑÑа unshift-
ÐобавлÑÐµÑ ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ð² наÑало маÑÑива:
let fruits = ["ÐпелÑÑин", "ÐÑÑÑа"]; fruits.unshift('Яблоко'); alert( fruits ); // Яблоко, ÐпелÑÑин, ÐÑÑÑа
ÐеÑÐ¾Ð´Ñ push и unshift могÑÑ Ð´Ð¾Ð±Ð°Ð²Ð»ÑÑÑ ÑÑÐ°Ð·Ñ Ð½ÐµÑколÑко ÑлеменÑов:
let fruits = ["Яблоко"];
fruits.push("ÐпелÑÑин", "ÐÑÑÑа");
fruits.unshift("ÐнанаÑ", "Ðимон");
// ["ÐнанаÑ", "Ðимон", "Яблоко", "ÐпелÑÑин", "ÐÑÑÑа"]
alert( fruits );
ÐнÑÑÑеннее ÑÑÑÑойÑÑво маÑÑива
ÐаÑÑив â ÑÑо оÑобÑй подвид обÑекÑов. ÐвадÑаÑнÑе Ñкобки, иÑполÑзÑемÑе Ð´Ð»Ñ Ñого, ÑÑÐ¾Ð±Ñ Ð¿Ð¾Ð»ÑÑиÑÑ Ð´Ð¾ÑÑÑп к ÑвойÑÑÐ²Ñ arr[0] â ÑÑо по ÑÑÑи обÑÑнÑй ÑинÑакÑÐ¸Ñ Ð´Ð¾ÑÑÑпа по клÑÑÑ, как obj[key], где в Ñоли obj Ñ Ð½Ð°Ñ arr, а в каÑеÑÑве клÑÑа â ÑиÑловой индекÑ.
ÐаÑÑÐ¸Ð²Ñ ÑаÑÑиÑÑÑÑ Ð¾Ð±ÑекÑÑ, Ñак как пÑедÑÑмаÑÑиваÑÑ ÑпеÑиалÑнÑе меÑÐ¾Ð´Ñ Ð´Ð»Ñ ÑабоÑÑ Ñ ÑпоÑÑдоÑеннÑми коллекÑиÑми даннÑÑ
, а Ñакже ÑвойÑÑво length. Ðо в оÑнове вÑÑ Ñавно Ð»ÐµÐ¶Ð¸Ñ Ð¾Ð±ÑекÑ.
СледÑÐµÑ Ð¿Ð¾Ð¼Ð½Ð¸ÑÑ, ÑÑо в JavaScript ÑÑÑеÑÑвÑÐµÑ 8 оÑновнÑÑ Ñипов даннÑÑ . ÐаÑÑив ÑвлÑеÑÑÑ Ð¾Ð±ÑекÑом и, ÑледоваÑелÑно, ведÑÑ ÑÐµÐ±Ñ ÐºÐ°Ðº обÑекÑ.
ÐапÑимеÑ, копиÑÑеÑÑÑ Ð¿Ð¾ ÑÑÑлке:
let fruits = ["Ðанан"]
let arr = fruits; // копиÑÑеÑÑÑ Ð¿Ð¾ ÑÑÑлке (две пеÑеменнÑе ÑÑÑлаÑÑÑÑ Ð½Ð° один и ÑÐ¾Ñ Ð¶Ðµ маÑÑив)
alert( arr === fruits ); // true
arr.push("ÐÑÑÑа"); // маÑÑив менÑеÑÑÑ Ð¿Ð¾ ÑÑÑлке
alert( fruits ); // Ðанан, ÐÑÑÑа - ÑепеÑÑ Ð´Ð²Ð° ÑлеменÑа
â¦Ðо Ñо, ÑÑо дейÑÑвиÑелÑно Ð´ÐµÐ»Ð°ÐµÑ Ð¼Ð°ÑÑÐ¸Ð²Ñ Ð¾ÑобеннÑми â ÑÑо Ð¸Ñ Ð²Ð½ÑÑÑеннее пÑедÑÑавление. Ðвижок JavaScript ÑÑаÑаеÑÑÑ Ñ ÑаниÑÑ ÑлеменÑÑ Ð¼Ð°ÑÑива в непÑеÑÑвной облаÑÑи памÑÑи, один за дÑÑгим, Ñак, как ÑÑо показано на иллÑÑÑÑаÑиÑÑ Ðº ÑÑой главе. СÑÑеÑÑвÑÑÑ Ð¸ дÑÑгие ÑпоÑÐ¾Ð±Ñ Ð¾Ð¿ÑимизаÑии, благодаÑÑ ÐºÐ¾ÑоÑÑм маÑÑÐ¸Ð²Ñ ÑабоÑаÑÑ Ð¾ÑÐµÐ½Ñ Ð±ÑÑÑÑо.
Ðо вÑе они ÑÑÑаÑÑÑ ÑÑÑекÑивноÑÑÑ, еÑли Ð¼Ñ Ð¿ÐµÑеÑÑанем ÑабоÑаÑÑ Ñ Ð¼Ð°ÑÑивом как Ñ Â«ÑпоÑÑдоÑенной коллекÑией даннÑÑ Â» и наÑнÑм иÑполÑзоваÑÑ ÐµÐ³Ð¾ как обÑÑнÑй обÑекÑ.
ÐапÑимеÑ, ÑÐµÑ Ð½Ð¸ÑеÑки Ð¼Ñ Ð¼Ð¾Ð¶ÐµÐ¼ ÑделаÑÑ ÑледÑÑÑее:
let fruits = []; // ÑоздаÑм маÑÑив
fruits[99999] = 5; // ÑоздаÑм ÑвойÑÑво Ñ Ð¸Ð½Ð´ÐµÐºÑом, намного пÑевÑÑаÑÑим Ð´Ð»Ð¸Ð½Ñ Ð¼Ð°ÑÑива
fruits.age = 25; // ÑоздаÑм ÑвойÑÑво Ñ Ð¿ÑоизволÑнÑм именем
ÐÑо возможно, поÑÐ¾Ð¼Ñ ÑÑо в оÑнове маÑÑива Ð»ÐµÐ¶Ð¸Ñ Ð¾Ð±ÑекÑ. ÐÑ Ð¼Ð¾Ð¶ÐµÐ¼ пÑиÑвоиÑÑ ÐµÐ¼Ñ Ð»ÑбÑе ÑвойÑÑва.
Ðо движок поймÑÑ, ÑÑо Ð¼Ñ ÑабоÑаем Ñ Ð¼Ð°ÑÑивом, как Ñ Ð¾Ð±ÑÑнÑм обÑекÑом. СпоÑÐ¾Ð±Ñ Ð¾Ð¿ÑимизаÑии, иÑполÑзÑемÑе Ð´Ð»Ñ Ð¼Ð°ÑÑивов, в ÑÑом ÑлÑÑае не Ð¿Ð¾Ð´Ñ Ð¾Ð´ÑÑ, поÑÑÐ¾Ð¼Ñ Ð¾Ð½Ð¸ бÑдÑÑ Ð¾ÑклÑÑÐµÐ½Ñ Ð¸ никакой вÑÐ³Ð¾Ð´Ñ Ð½Ðµ пÑинеÑÑÑ.
ÐаÑианÑÑ Ð½ÐµÐ¿ÑавилÑного пÑÐ¸Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¼Ð°ÑÑива:
- Ðобавление неÑиÑлового ÑвойÑÑва, напÑимеÑ:
arr.test = 5. - Создание «дÑÑ», напÑимеÑ: добавление
arr[0], заÑемarr[1000](Ð¼ÐµÐ¶Ð´Ñ Ð½Ð¸Ð¼Ð¸ ниÑего неÑ). - Ðаполнение маÑÑива в обÑаÑном поÑÑдке, напÑимеÑ:
arr[1000],arr[999]и Ñ.д.
ÐаÑÑив ÑледÑÐµÑ ÑÑиÑаÑÑ Ð¾Ñобой ÑÑÑÑкÑÑÑой, позволÑÑÑей ÑабоÑаÑÑ Ñ ÑпоÑÑдоÑеннÑми даннÑми. ÐÐ»Ñ ÑÑого маÑÑÐ¸Ð²Ñ Ð¿ÑедоÑÑавлÑÑÑ ÑпеÑиалÑнÑе меÑодÑ. ÐаÑÑÐ¸Ð²Ñ ÑÑаÑелÑно наÑÑÑÐ¾ÐµÐ½Ñ Ð² движкаÑ
JavaScript Ð´Ð»Ñ ÑабоÑÑ Ñ Ð¾Ð´Ð½Ð¾ÑипнÑми ÑпоÑÑдоÑеннÑми даннÑми, поÑÑомÑ, пожалÑйÑÑа, иÑполÑзÑйÑе иÑ
именно в ÑакиÑ
ÑлÑÑаÑÑ
. ÐÑли вам нÑÐ¶Ð½Ñ Ð¿ÑоизволÑнÑе клÑÑи, вполне возможно, лÑÑÑе подойдÑÑ Ð¾Ð±ÑÑнÑй обÑÐµÐºÑ {}.
ÐÑÑекÑивноÑÑÑ
ÐеÑÐ¾Ð´Ñ push/pop вÑполнÑÑÑÑÑ Ð±ÑÑÑÑо, а меÑÐ¾Ð´Ñ shift/unshift â медленно.
ÐоÑÐµÐ¼Ñ ÑабоÑаÑÑ Ñ ÐºÐ¾Ð½Ñом маÑÑива бÑÑÑÑее, Ñем Ñ ÐµÐ³Ð¾ наÑалом? ÐавайÑе поÑмоÑÑим, ÑÑо пÑоиÑÑ Ð¾Ð´Ð¸Ñ Ð²Ð¾ вÑÐµÐ¼Ñ Ð²ÑполнениÑ:
fruits.shift(); // ÑдалÑем пеÑвÑй ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ñ Ð½Ð°Ñала
ÐÑоÑÑо взÑÑÑ Ð¸ ÑдалиÑÑ ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ñ Ð½Ð¾Ð¼ÐµÑом 0 недоÑÑаÑоÑно. ÐÑжно Ñакже заново пÑонÑмеÑоваÑÑ Ð¾ÑÑалÑнÑе ÑлеменÑÑ.
ÐпеÑаÑÐ¸Ñ shift должна вÑполниÑÑ 3 дейÑÑвиÑ:
- УдалиÑÑ ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ñ Ð¸Ð½Ð´ÐµÐºÑом
0. - СдвинÑÑÑ Ð²Ñе ÑлеменÑÑ Ð²Ð»ÐµÐ²Ð¾, заново пÑонÑмеÑоваÑÑ Ð¸Ñ
, заменив
1на0,2на1и Ñ.д. - ÐбновиÑÑ ÑвойÑÑво
length.
Чем болÑÑе ÑлеменÑов ÑодеÑÐ¶Ð¸Ñ Ð¼Ð°ÑÑив, Ñем болÑÑе вÑемени поÑÑебÑеÑÑÑ Ð´Ð»Ñ Ñого, ÑÑÐ¾Ð±Ñ Ð¸Ñ Ð¿ÐµÑемеÑÑиÑÑ, болÑÑе опеÑаÑий Ñ Ð¿Ð°Ð¼ÑÑÑÑ.
То же Ñамое пÑоиÑÑ
Ð¾Ð´Ð¸Ñ Ñ unshift: ÑÑÐ¾Ð±Ñ Ð´Ð¾Ð±Ð°Ð²Ð¸ÑÑ ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ð² наÑало маÑÑива, нам нÑжно ÑнаÑала ÑдвинÑÑÑ ÑÑÑеÑÑвÑÑÑие ÑлеменÑÑ Ð²Ð¿Ñаво, ÑвелиÑÐ¸Ð²Ð°Ñ Ð¸Ñ
индекÑÑ.
Ð ÑÑо же Ñ push/pop? Ðм не нÑжно ниÑего пеÑемеÑаÑÑ. ЧÑÐ¾Ð±Ñ ÑдалиÑÑ ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ð² конÑе маÑÑива, меÑод pop оÑиÑÐ°ÐµÑ Ð¸Ð½Ð´ÐµÐºÑ Ð¸ ÑменÑÑÐ°ÐµÑ Ð·Ð½Ð°Ñение length.
ÐейÑÑÐ²Ð¸Ñ Ð¿Ñи опеÑаÑии pop:
fruits.pop(); // ÑдалÑем один ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ñ ÐºÐ¾Ð½Ñа
ÐеÑод pop не ÑÑебÑÐµÑ Ð¿ÐµÑемеÑениÑ, поÑÐ¾Ð¼Ñ ÑÑо оÑÑалÑнÑе ÑлеменÑÑ Ð¾ÑÑаÑÑÑÑ Ñ Ñеми же индекÑами. Ðменно поÑÑÐ¾Ð¼Ñ Ð¾Ð½ вÑполнÑеÑÑÑ Ð¾ÑÐµÐ½Ñ Ð±ÑÑÑÑо.
ÐналогиÑно ÑабоÑÐ°ÐµÑ Ð¼ÐµÑод push.
ÐеÑÐµÐ±Ð¾Ñ ÑлеменÑов
Ðдним из ÑамÑÑ ÑÑаÑÑÑ ÑпоÑобов пеÑебоÑа ÑлеменÑов маÑÑива ÑвлÑеÑÑÑ Ñикл for по ÑиÑÑовÑм индекÑам:
let arr = ["Яблоко", "ÐпелÑÑин", "ÐÑÑÑа"];
for (let i = 0; i < arr.length; i++) {
alert( arr[i] );
}
Ðо Ð´Ð»Ñ Ð¼Ð°ÑÑивов возможен и дÑÑгой ваÑÐ¸Ð°Ð½Ñ Ñикла, for..of:
let fruits = ["Яблоко", "ÐпелÑÑин", "Слива"];
// пÑоÑ
Ð¾Ð´Ð¸Ñ Ð¿Ð¾ знаÑениÑм
for (let fruit of fruits) {
alert( fruit );
}
Цикл for..of не пÑедоÑÑавлÑÐµÑ Ð´Ð¾ÑÑÑпа к номеÑÑ ÑекÑÑего ÑлеменÑа, ÑолÑко к его знаÑениÑ, но в болÑÑинÑÑве ÑлÑÑаев ÑÑого доÑÑаÑоÑно. Ð Ñакже ÑÑо коÑоÑе.
ТеÑ
ниÑеÑки, Ñак как маÑÑив ÑвлÑеÑÑÑ Ð¾Ð±ÑекÑом, можно иÑполÑзоваÑÑ Ð¸ ваÑÐ¸Ð°Ð½Ñ for..in:
let arr = ["Яблоко", "ÐпелÑÑин", "ÐÑÑÑа"];
for (let key in arr) {
alert( arr[key] ); // Яблоко, ÐпелÑÑин, ÐÑÑÑа
}
Ðо на Ñамом деле ÑÑо â Ð¿Ð»Ð¾Ñ Ð°Ñ Ð¸Ð´ÐµÑ. СÑÑеÑÑвÑÑÑ ÑкÑÑÑÑе недоÑÑаÑки ÑÑого ÑпоÑоба:
-
Цикл
for..inвÑполнÑÐµÑ Ð¿ÐµÑÐµÐ±Ð¾Ñ Ð²ÑÐµÑ ÑвойÑÑв обÑекÑа, а не ÑолÑко ÑиÑÑовÑÑ .РбÑаÑзеÑе и дÑÑÐ³Ð¸Ñ Ð¿ÑогÑаммнÑÑ ÑÑÐµÐ´Ð°Ñ Ñакже ÑÑÑеÑÑвÑÑÑ Ñак назÑваемÑе «пÑевдомаÑÑивÑ» â обÑекÑÑ, коÑоÑÑе вÑглÑдÑÑ, как маÑÑив. То еÑÑÑ, Ñ Ð½Ð¸Ñ ÐµÑÑÑ ÑвойÑÑво
lengthи индекÑÑ, но они Ñакже могÑÑ Ð¸Ð¼ÐµÑÑ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑнÑе неÑиÑловÑе ÑвойÑÑва и меÑодÑ, коÑоÑÑе нам обÑÑно не нÑжнÑ. Тем не менее, Ñиклfor..inвÑÐ²ÐµÐ´ÐµÑ Ð¸ Ð¸Ñ . ÐоÑÑомÑ, еÑли нам пÑÐ¸Ñ Ð¾Ð´Ð¸ÑÑÑ Ð¸Ð¼ÐµÑÑ Ð´ÐµÐ»Ð¾ Ñ Ð¾Ð±ÑекÑами, Ð¿Ð¾Ñ Ð¾Ð¶Ð¸Ð¼Ð¸ на маÑÑив, Ñакие «лиÑние» ÑвойÑÑва могÑÑ ÑÑаÑÑ Ð¿Ñоблемой. -
Цикл
for..inопÑимизиÑован под пÑоизволÑнÑе обÑекÑÑ, не маÑÑивÑ, и поÑÑÐ¾Ð¼Ñ Ð² 10-100 Ñаз медленнее. УвелиÑение ÑкоÑоÑÑи вÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð¼Ð¾Ð¶ÐµÑ Ð¸Ð¼ÐµÑÑ Ð·Ð½Ð°Ñение ÑолÑко пÑи возникновении ÑÐ·ÐºÐ¸Ñ Ð¼ÐµÑÑ. Ðо Ð¼Ñ Ð²ÑÑ Ð¶Ðµ Ð´Ð¾Ð»Ð¶Ð½Ñ Ð¿ÑедÑÑавлÑÑÑ ÑазниÑÑ.
РобÑем, не ÑледÑÐµÑ Ð¸ÑполÑзоваÑÑ Ñикл for..in Ð´Ð»Ñ Ð¼Ð°ÑÑивов.
Ðемного о «length»
СвойÑÑво length авÑомаÑиÑеÑки обновлÑеÑÑÑ Ð¿Ñи изменении маÑÑива. ÐÑли бÑÑÑ ÑоÑнÑми, ÑÑо не колиÑеÑÑво ÑлеменÑов маÑÑива, а наиболÑÑий ÑиÑÑовой Ð¸Ð½Ð´ÐµÐºÑ Ð¿Ð»ÑÑ Ð¾Ð´Ð¸Ð½.
ÐапÑимеÑ, единÑÑвеннÑй ÑлеменÑ, имеÑÑий болÑÑой индекÑ, даÑÑ Ð±Ð¾Ð»ÑÑÑÑ Ð´Ð»Ð¸Ð½Ñ:
let fruits = [];
fruits[123] = "Яблоко";
alert( fruits.length ); // 124
ÐбÑаÑиÑе внимание, ÑÑо обÑÑно Ð¼Ñ Ð½Ðµ иÑполÑзÑем маÑÑÐ¸Ð²Ñ Ñаким обÑазом.
ÐÑÑ Ð¾Ð´Ð¸Ð½ инÑеÑеÑнÑй ÑÐ°ÐºÑ Ð¾ ÑвойÑÑве length â его можно пеÑезапиÑаÑÑ.
ÐÑли Ð¼Ñ Ð²ÑÑÑнÑÑ ÑвелиÑим его, ниÑего инÑеÑеÑного не пÑоизойдÑÑ. ÐаÑо, еÑли Ð¼Ñ ÑменÑÑим его, маÑÑив ÑÑÐ°Ð½ÐµÑ ÐºÐ¾ÑоÑе. ÐÑÐ¾Ñ Ð¿ÑоÑеÑÑ Ð½ÐµÐ¾Ð±ÑаÑим, как Ð¼Ñ Ð¼Ð¾Ð¶ÐµÐ¼ понÑÑÑ Ð¸Ð· пÑимеÑа:
let arr = [1, 2, 3, 4, 5];
arr.length = 2; // ÑкоÑаÑиваем до двÑÑ
ÑлеменÑов
alert( arr ); // [1, 2]
arr.length = 5; // возвÑаÑаем length как бÑло
alert( arr[3] ); // undefined: знаÑÐµÐ½Ð¸Ñ Ð½Ðµ воÑÑÑановилиÑÑ
Таким обÑазом, ÑамÑй пÑоÑÑой ÑпоÑоб оÑиÑÑиÑÑ Ð¼Ð°ÑÑив â ÑÑо arr.length = 0;.
new Array()
СÑÑеÑÑвÑÐµÑ ÐµÑÑ Ð¾Ð´Ð¸Ð½ ваÑÐ¸Ð°Ð½Ñ ÑинÑакÑиÑа Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð¼Ð°ÑÑива:
let arr = new Array("Яблоко", "ÐÑÑÑа", "и Ñд");
Ðн Ñедко пÑименÑеÑÑÑ, Ñак как квадÑаÑнÑе Ñкобки [] коÑоÑе. ÐÑоме Ñого, Ñ Ð½ÐµÐ³Ð¾ еÑÑÑ Ñ
иÑÑÐ°Ñ Ð¾ÑобенноÑÑÑ.
ÐÑли new Array вÑзÑваеÑÑÑ Ñ Ð¾Ð´Ð½Ð¸Ð¼ аÑгÑменÑом, коÑоÑÑй пÑедÑÑавлÑÐµÑ Ñобой ÑиÑло, он ÑоздаÑÑ Ð¼Ð°ÑÑив без ÑлеменÑов, но Ñ Ð·Ð°Ð´Ð°Ð½Ð½Ð¾Ð¹ длиной.
ÐавайÑе поÑмоÑÑим, как можно оказаÑÑ Ñебе медвежÑÑ ÑÑлÑгÑ:
let arr = new Array(2); // ÑоздаÑÑÑÑ Ð»Ð¸ маÑÑив [2]?
alert( arr[0] ); // undefined! Ð½ÐµÑ ÑлеменÑов.
alert( arr.length ); // length 2
Ðак Ð¼Ñ Ð²Ð¸Ð´Ð¸Ð¼, в коде, пÑедÑÑавленном вÑÑе, в new Array(number) вÑе ÑлеменÑÑ ÑÐ°Ð²Ð½Ñ undefined.
ЧÑÐ¾Ð±Ñ Ð¸Ð·Ð±ÐµÐ¶Ð°ÑÑ Ð¿Ð¾ÑÐ²Ð»ÐµÐ½Ð¸Ñ ÑакиÑ
неожиданнÑÑ
ÑиÑÑаÑий, Ð¼Ñ Ð¾Ð±ÑÑно иÑполÑзÑем квадÑаÑнÑе Ñкобки, еÑли, конеÑно, не знаем ÑоÑно, ÑÑо по какой-Ñо пÑиÑине нÑжен именно Array.
ÐногомеÑнÑе маÑÑивÑ
ÐаÑÑÐ¸Ð²Ñ Ð¼Ð¾Ð³ÑÑ ÑодеÑжаÑÑ ÑлеменÑÑ, коÑоÑÑе Ñоже ÑвлÑÑÑÑÑ Ð¼Ð°ÑÑивами. ÐÑо можно иÑполÑзоваÑÑ Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð¼Ð½Ð¾Ð³Ð¾Ð¼ÐµÑнÑÑ Ð¼Ð°ÑÑивов, напÑимеÑ, Ð´Ð»Ñ Ñ ÑÐ°Ð½ÐµÐ½Ð¸Ñ Ð¼Ð°ÑÑиÑ:
let matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
];
alert( matrix[1][1] ); // 5, ÑенÑÑалÑнÑй ÑлеменÑ
toString
ÐаÑÑÐ¸Ð²Ñ Ð¿Ð¾-ÑÐ²Ð¾ÐµÐ¼Ñ ÑеализÑÑÑ Ð¼ÐµÑод toString, коÑоÑÑй возвÑаÑÐ°ÐµÑ ÑпиÑок ÑлеменÑов, ÑазделÑннÑÑ
запÑÑÑми.
ÐапÑимеÑ:
let arr = [1, 2, 3];
alert( arr ); // 1,2,3
alert( String(arr) === '1,2,3' ); // true
ÐавайÑе ÑепеÑÑ Ð¿Ð¾Ð¿ÑобÑем ÑледÑÑÑее:
alert( [] + 1 ); // "1"
alert( [1] + 1 ); // "11"
alert( [1,2] + 1 ); // "1,21"
ÐаÑÑÐ¸Ð²Ñ Ð½Ðµ имеÑÑ Ð½Ð¸ Symbol.toPrimitive, ни ÑÑнкÑиониÑÑÑÑего valueOf, они ÑеализÑÑÑ ÑолÑко пÑеобÑазование toString, Ñаким обÑазом, здеÑÑ [] ÑÑановиÑÑÑ Ð¿ÑÑÑой ÑÑÑокой, [1] ÑÑановиÑÑÑ "1", а [1,2] ÑÑановиÑÑÑ "1,2".
Ðогда бинаÑнÑй опеÑаÑÐ¾Ñ Ð¿Ð»ÑÑ "+" добавлÑÐµÑ ÑÑо-либо к ÑÑÑоке, он Ñоже пÑеобÑазÑÐµÑ ÑÑо в ÑÑÑокÑ, Ñаким обÑазом:
alert( "" + 1 ); // "1"
alert( "1" + 1 ); // "11"
alert( "1,2" + 1 ); // "1,21"
Ðе ÑÑавнивайÑе маÑÑÐ¸Ð²Ñ Ð¿Ñи помоÑи ==
Ð JavaScript, в оÑлиÑие Ð¾Ñ Ð½ÐµÐºÐ¾ÑоÑÑÑ
дÑÑгиÑ
ÑзÑков пÑогÑаммиÑованиÑ, маÑÑÐ¸Ð²Ñ Ð½Ðµ ÑледÑÐµÑ ÑÑавниваÑÑ Ð¿Ñи помоÑи опеÑаÑоÑа ==.
У ÑÑого опеÑаÑоÑа Ð½ÐµÑ ÑпеÑиалÑного Ð¿Ð¾Ð´Ñ Ð¾Ð´Ð° к маÑÑивам, он ÑабоÑÐ°ÐµÑ Ñ Ð½Ð¸Ð¼Ð¸, как и Ñ Ð»ÑбÑми дÑÑгими обÑекÑами.
ÐавайÑе еÑÑ Ñаз напомним пÑавила:
- Ðва обÑекÑа ÑÐ°Ð²Ð½Ñ Ð´ÑÑг дÑÑгÑ
==ÑолÑко в Ñом ÑлÑÑае, еÑли они ÑÑÑлаÑÑÑÑ Ð½Ð° один и ÑÐ¾Ñ Ð¶Ðµ обÑекÑ. - ÐÑли один из аÑгÑменÑов
==ÑвлÑеÑÑÑ Ð¾Ð±ÑекÑом, а дÑÑгой â пÑимиÑивом, Ñо обÑÐµÐºÑ Ð¿ÑеобÑазÑеÑÑÑ Ð² пÑимиÑив, как опиÑано в главе ÐÑеобÑазование обÑекÑов в пÑимиÑивÑ. - â¦Ðа иÑклÑÑением
nullиundefined, коÑоÑÑе ÑавнÑ==дÑÑг дÑÑÐ³Ñ Ð¸ ниÑÐµÐ¼Ñ Ð±Ð¾Ð»ÑÑе.
ÐпеÑаÑÐ¾Ñ ÑÑÑогого ÑавенÑÑва === еÑÑ Ð¿ÑоÑе, Ñак как он не пÑеобÑазÑÐµÑ ÑипÑ.
ÐÑак, еÑли Ð¼Ñ Ð²ÑÑ Ð¶Ðµ ÑÑавниваем маÑÑÐ¸Ð²Ñ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ ==, Ñо они никогда не бÑдÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ñми, еÑли ÑолÑко Ð¼Ñ Ð½Ðµ ÑÑавним две пеÑеменнÑе, коÑоÑÑе ÑÑÑлаÑÑÑÑ Ð½Ð° один и ÑÐ¾Ñ Ð¶Ðµ маÑÑив
ÐапÑимеÑ:
alert( [] == [] ); // false
alert( [0] == [0] ); // false
ТеÑ
ниÑеÑки ÑÑи маÑÑÐ¸Ð²Ñ ÑвлÑÑÑÑÑ ÑазнÑми обÑекÑами. Так ÑÑо они не ÑавнÑ. ÐпеÑаÑÐ¾Ñ == не вÑполнÑÐµÑ Ð¿Ð¾ÑлеменÑное ÑÑавнение.
СÑавнение Ñ Ð¿ÑимиÑивами Ñакже Ð¼Ð¾Ð¶ÐµÑ Ð´Ð°ÑÑ, казалоÑÑ Ð±Ñ, ÑÑÑаннÑе ÑезÑлÑÑаÑÑ:
alert( 0 == [] ); // true
alert('0' == [] ); // false
ÐдеÑÑ, в обоиÑ
ÑлÑÑаÑÑ
, Ð¼Ñ ÑÑавниваем пÑимиÑив Ñ Ð¾Ð±ÑекÑом маÑÑива. Таким обÑазом, маÑÑив [] пÑеобÑазÑеÑÑÑ Ð² пÑимиÑив Ñ ÑелÑÑ ÑÑÐ°Ð²Ð½ÐµÐ½Ð¸Ñ Ð¸ ÑÑановиÑÑÑ Ð¿ÑÑÑой ÑÑÑокой ''.
ÐаÑем пÑодолжаеÑÑÑ Ð¿ÑоÑеÑÑ ÑÑÐ°Ð²Ð½ÐµÐ½Ð¸Ñ Ñ Ð¿ÑимиÑивами, как опиÑано в главе ÐÑеобÑазование Ñипов:
// поÑле Ñого, как [] бÑл пÑеобÑазован в ''
alert( 0 == '' ); // true, Ñак как '' пÑеобÑазÑеÑÑÑ Ð² ÑиÑло 0
alert('0' == '' ); // false, Ð½ÐµÑ Ð¿ÑеобÑÐ°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ Ñипов, ÑазнÑе ÑÑÑоки
Так как же ÑÑавниÑÑ Ð¼Ð°ÑÑивÑ?
ÐÑо пÑоÑÑо: не иÑполÑзÑйÑе опеÑаÑÐ¾Ñ ==. ÐмеÑÑо ÑÑого ÑÑавниÑе иÑ
по ÑлеменÑам в Ñикле или иÑполÑзÑÑ Ð¼ÐµÑÐ¾Ð´Ñ Ð¸ÑеÑаÑии, опиÑаннÑе в ÑледÑÑÑей главе.
ÐÑого
ÐаÑÑив â ÑÑо оÑобÑй Ñип обÑекÑа, пÑедназнаÑеннÑй Ð´Ð»Ñ ÑабоÑÑ Ñ ÑпоÑÑдоÑеннÑм набоÑом ÑлеменÑов.
ÐбÑÑвление:
// квадÑаÑнÑе Ñкобки (обÑÑно)
let arr = [item1, item2...];
// new Array (оÑÐµÐ½Ñ Ñедко)
let arr = new Array(item1, item2...);
ÐÑзов new Array(number) ÑоздаÑÑ Ð¼Ð°ÑÑив Ñ Ð·Ð°Ð´Ð°Ð½Ð½Ð¾Ð¹ длиной, но без ÑлеменÑов.
- СвойÑÑво
lengthоÑÑÐ°Ð¶Ð°ÐµÑ Ð´Ð»Ð¸Ð½Ñ Ð¼Ð°ÑÑива или, еÑли ÑоÑнее, его поÑледний ÑиÑÑовой Ð¸Ð½Ð´ÐµÐºÑ Ð¿Ð»ÑÑ Ð¾Ð´Ð¸Ð½. Ðлина коÑÑекÑиÑÑеÑÑÑ Ð°Ð²ÑомаÑиÑеÑки меÑодами маÑÑива. - ÐÑли Ð¼Ñ ÑменÑÑаем
lengthвÑÑÑнÑÑ, маÑÑив ÑкоÑаÑиваеÑÑÑ.
ÐолÑÑение ÑлеменÑов:
- ÐÑ Ð¼Ð¾Ð¶ÐµÐ¼ полÑÑиÑÑ ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ð¿Ð¾ его индекÑÑ, напÑимеÑ
arr[0]. - Также Ð¼Ñ Ð¼Ð¾Ð¶ÐµÐ¼ иÑполÑзоваÑÑ Ð¼ÐµÑод
at(i)Ð´Ð»Ñ Ð¿Ð¾Ð»ÑÑÐµÐ½Ð¸Ñ ÑлеменÑов Ñ Ð¾ÑÑиÑаÑелÑнÑм индекÑом, Ð´Ð»Ñ Ð¾ÑÑиÑаÑелÑнÑÑ Ð·Ð½Ð°Ñенийi, он оÑÑÑÑÐ¿Ð°ÐµÑ Ð¾Ñ ÐºÐ¾Ð½Ñа маÑÑива. РоÑÑалÑном он ÑабоÑÐ°ÐµÑ Ñак же, какarr[i], еÑлиi >= 0.
ÐÑ Ð¼Ð¾Ð¶ÐµÐ¼ иÑполÑзоваÑÑ Ð¼Ð°ÑÑив как двÑÑÑоÑоннÑÑ Ð¾ÑеÑедÑ, иÑполÑзÑÑ ÑледÑÑÑие опеÑаÑии:
push(...items)добавлÑеÑitemsв ÐºÐ¾Ð½ÐµÑ Ð¼Ð°ÑÑива.pop()ÑдалÑÐµÑ ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ð² конÑе маÑÑива и возвÑаÑÐ°ÐµÑ ÐµÐ³Ð¾.shift()ÑдалÑÐµÑ ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ð² наÑале маÑÑива и возвÑаÑÐ°ÐµÑ ÐµÐ³Ð¾.unshift(...items)добавлÑеÑitemsв наÑало маÑÑива.
ЧÑÐ¾Ð±Ñ Ð¿ÑойÑиÑÑ Ð¿Ð¾ ÑлеменÑам маÑÑива:
for (let i=0; i<arr.length; i++)â ÑабоÑÐ°ÐµÑ Ð±ÑÑÑÑее вÑего, ÑовмеÑÑим Ñо ÑÑаÑÑми бÑаÑзеÑами.for (let item of arr)â ÑовÑеменнÑй ÑинÑакÑÐ¸Ñ ÑолÑко Ð´Ð»Ñ Ð·Ð½Ð°Ñений ÑлеменÑов (к индекÑам Ð½ÐµÑ Ð´Ð¾ÑÑÑпа).for (let i in arr)â никогда не иÑполÑзÑйÑе Ð´Ð»Ñ Ð¼Ð°ÑÑивов!
ÐÑ Ð²ÐµÑнÑмÑÑ Ðº маÑÑивам и изÑÑим дÑÑгие меÑÐ¾Ð´Ñ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ, ÑдалениÑ, вÑÐ´ÐµÐ»ÐµÐ½Ð¸Ñ ÑлеменÑов и ÑоÑÑиÑовки маÑÑивов в главе: ÐеÑÐ¾Ð´Ñ Ð¼Ð°ÑÑивов.
ÐомменÑаÑии
<code>, Ð´Ð»Ñ Ð½ÐµÑколÑÐºÐ¸Ñ ÑÑÑок кода — Ñег<pre>, еÑли болÑÑе 10 ÑÑÑок — ÑÑÑÐ»ÐºÑ Ð½Ð° пеÑоÑниÑÑ (plnkr, JSBin, codepenâ¦)