ÐбâÑкÑи дозволÑÑÑÑ Ð·Ð±ÐµÑÑгаÑи набоÑи знаÑÐµÐ½Ñ Ð· клÑÑами. Це ÑÑдово.
Ðле доÑиÑÑ ÑаÑÑо ми ÑозÑмÑÑмо, Ñо нам Ð½ÐµÐ¾Ð±Ñ Ñдна впоÑÑдкована колекÑÑÑ Ð´Ð°Ð½Ð¸Ñ , Ñка ÑкладаÑÑÑÑÑ Ð· 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 (об'ÑкÑ) Ñа вивеÑÑи його влаÑÑивÑÑÑÑ name
alert( arr[1].name ); // Ðикола
// оÑÑимаÑи ÐµÐ»ÐµÐ¼ÐµÐ½Ñ Ð· ÑндекÑом 3 (ÑÑнкÑÑÑ) Ñа виконаÑи ÑÑ
arr[3](); // пÑивÑÑ
СпиÑок елеменÑÑв маÑивÑ, Ñк Ñ ÑпиÑок елеменÑÑв обâÑкÑа може закÑнÑÑваÑиÑÑ ÐºÐ¾Ð¼Ð¾Ñ:
let fruits = [
"ЯблÑко",
"ÐпелÑÑин",
"Слива",
];
Ðома в кÑнÑÑ ÑÑдка ÑпÑоÑÑÑ Ð¿ÑоÑÐµÑ Ð´Ð¾Ð´Ð°Ð²Ð°Ð½Ð½Ñ/Ð²Ð¸Ð´Ð°Ð»ÐµÐ½Ð½Ñ ÐµÐ»ÐµÐ¼ÐµÐ½ÑÑв, ÑÐ¾Ð¼Ñ Ñо вÑÑ ÑÑдки ÑÑаÑÑÑ Ð¾Ð´Ð½Ð¾Ñипними.
ÐÑÑимаÑи оÑÑÐ°Ð½Ð½Ñ ÐµÐ»ÐµÐ¼ÐµÐ½Ñи за Ð´Ð¾Ð¿Ð¾Ð¼Ð¾Ð³Ð¾Ñ âatâ
СкажÑмо, нам поÑÑÑбен оÑÑаннÑй ÐµÐ»ÐµÐ¼ÐµÐ½Ñ Ð¼Ð°ÑивÑ.
ÐеÑÐºÑ Ð¼Ð¾Ð²Ð¸ пÑогÑамÑÐ²Ð°Ð½Ð½Ñ Ð´Ð¾Ð·Ð²Ð¾Ð»ÑÑÑÑ Ð²Ð¸ÐºÐ¾ÑиÑÑовÑваÑи вÑдâÑÐ¼Ð½Ñ ÑндекÑи з ÑÑÑÑ Ð¶ меÑоÑ, напÑиклад, fruits[-1].
ÐÑоÑе в JavaScript Ñе не пÑаÑÑваÑиме. РезÑлÑÑÐ°Ñ Ð±Ñде undefined, оÑкÑлÑки ÑÐ½Ð´ÐµÐºÑ Ñ ÐºÐ²Ð°Ð´ÑаÑниÑ
дÑжкаÑ
ÑÑакÑÑÑÑÑÑÑ Ð±ÑквалÑно.
Ðи можемо Ñвно обÑиÑлиÑи ÑÐ½Ð´ÐµÐºÑ Ð¾ÑÑаннÑого елеменÑа, а поÑÑм оÑÑимаÑи до нÑого доÑÑÑп: fruits[fruits.length - 1].
let fruits = ["ЯблÑко", "ÐпелÑÑин", "Слива"];
alert( fruits[fruits.length-1] ); // Слива
ТÑÐ¾Ñ Ð¸ гÑомÑздко, Ñи не Ñак? Ðам поÑÑÑбно двÑÑÑ Ð½Ð°Ð¿Ð¸ÑаÑи ÑмâÑ Ð·Ð¼ÑнноÑ.
Ðа ÑаÑÑÑ, Ñ ÐºÐ¾ÑоÑÑий ÑинÑакÑиÑ: fruits.at(-1):
let fruits = ["ЯблÑко", "ÐпелÑÑин", "Слива"];
// Ñе Ñаме, Ñо й fruits[fruits.length-1]
alert( fruits.at(-1) ); // Слива
ÐнакÑе кажÑÑи, arr.at(i):
- Ñе Ñаме, Ñо й
arr[i], ÑкÑоi >= 0. - Ð´Ð»Ñ Ð²ÑдâÑмниÑ
знаÑенÑ
iвÑн ÑÑÐºÐ°Ñ ÐµÐ»ÐµÐ¼ÐµÐ½Ñ Ð²ÑдÑÑÑпаÑÑи вÑд кÑнÑÑ Ð¼Ð°ÑивÑ.
ÐеÑоди pop/push, shift/unshift
ЧеÑга â один з найбÑлÑÑ Ð¿Ð¾Ð¿ÑлÑÑÐ½Ð¸Ñ Ð²Ð°ÑÑанÑÑв викоÑиÑÑÐ°Ð½Ð½Ñ Ð¾Ð±âÑкÑа. У компâÑÑеÑÐ½Ð¸Ñ Ð½Ð°ÑÐºÐ°Ñ Ñак познаÑаÑÑÑ ÐºÐ¾Ð»ÐµÐºÑÑÑ ÐµÐ»ÐµÐ¼ÐµÐ½ÑÑв, Ñка пÑдÑÑимÑÑ Ð´Ð²Ñ Ð¾Ð¿ÐµÑаÑÑÑ:
pushÐ´Ð¾Ð´Ð°Ñ ÐµÐ»ÐµÐ¼ÐµÐ½Ñ Ñ ÐºÑнеÑÑ ÑпиÑкÑ.shiftвидалÑÑ ÐµÐ»ÐµÐ¼ÐµÐ½Ñ Ð½Ð° поÑаÑкÑ, змÑÑÑÑÑи ÑеÑгÑ, Ñаким Ñином, Ñо 2-й ÐµÐ»ÐµÐ¼ÐµÐ½Ñ ÑÑÐ°Ñ 1-м.
ÐаÑиви пÑдÑÑимÑÑÑÑ Ð¾Ð±Ð¸Ð´Ð²Ñ Ð¾Ð¿ÐµÑаÑÑÑ.
Ðа пÑакÑиÑÑ Ñе дÑже ÑаÑÑо ÑÑÐ°Ñ Ñ Ð¿ÑигодÑ. ÐапÑиклад, ÑеÑга з повÑдомленÑ, ÑÐºÑ Ð½ÐµÐ¾Ð±Ñ Ñдно показÑваÑи на екÑанÑ.
ÐÑнÑÑ Ñакож ÑнÑий ваÑÑÐ°Ð½Ñ Ð²Ð¸ÐºÐ¾ÑиÑÑÐ°Ð½Ð½Ñ Ð¼Ð°ÑивÑв â ÑÑÑÑкÑÑÑа Ð´Ð°Ð½Ð¸Ñ , Ñка називаÑÑÑÑÑ ÑÑек.
Ðона пÑдÑÑимÑÑ Ð´Ð²Ð° Ñипи опеÑаÑÑй:
pushÐ´Ð¾Ð´Ð°Ñ ÐµÐ»ÐµÐ¼ÐµÐ½Ñи в кÑнеÑÑ.popвидалÑÑ ÐµÐ»ÐµÐ¼ÐµÐ½Ñ Ð· кÑнÑÑ.
Таким Ñином Ð½Ð¾Ð²Ñ ÐµÐ»ÐµÐ¼ÐµÐ½Ñи завжди додаÑÑÑÑÑ Ð°Ð±Ð¾ видалÑÑÑÑÑÑ Ð· âкÑнÑÑâ.
ХоÑоÑим пÑикладом ÑÑÐµÐºÑ Ñ ÐºÐ¾Ð»Ð¾Ð´Ð° каÑÑ: Ð½Ð¾Ð²Ñ ÐºÐ°ÑÑи кладÑÑÑÑÑ Ð½Ð° веÑÑ
Ñ Ð±ÐµÑÑÑÑÑÑ Ñеж звеÑÑ
Ñ:
У ÑÑÐµÐºÐ°Ñ â оÑÑаннÑй доданий ÐµÐ»ÐµÐ¼ÐµÐ½Ñ Ð¿Ð¾Ð²ÐµÑÑаÑÑÑÑÑ Ð¿ÐµÑÑим, Ñей пÑинÑип Ñакож називаÑÑÑ LIFO (з англ. Last-In-First-Out, âоÑÑаннÑй пÑийÑов â пеÑÑий пÑÑовâ). ÐÐ»Ñ ÑеÑг ми викоÑиÑÑовÑÑмо пÑинÑип FIFO (з англ. First-In-First-Out, âпеÑÑий пÑийÑов â пеÑÑий пÑÑовâ).
ÐаÑиви в 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], де 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]ÑоÑо.
ÐÑÐ´Ñ Ð»Ð°Ñка, дÑмайÑе пÑо маÑиви Ñк пÑо оÑÐ¾Ð±Ð»Ð¸Ð²Ñ ÑÑÑÑкÑÑÑи Ð´Ð»Ñ ÑобоÑи з впоÑÑдкованими даними. Ðони надаÑÑÑ ÑпеÑÑалÑÐ½Ñ Ð¼ÐµÑоди Ð´Ð»Ñ ÑÑого. ÐаÑиви дÑже ÑеÑелÑно налаÑÑÐ¾Ð²Ð°Ð½Ñ Ð½Ð° ÑобоÑÑ Ð· непеÑеÑвними впоÑÑдкованими даними, ÑÐ¾Ð¼Ñ Ð²Ð¸ÐºÐ¾ÑиÑÑовÑйÑе ÑÑ
Ñаме Ñаким Ñином. ТомÑ, ÑкÑо вам необÑ
ÑÐ´Ð½Ñ Ð´Ð¾Ð²ÑлÑÐ½Ñ ÐºÐ»ÑÑÑ, дÑже ймовÑÑно, Ñо вам бÑлÑÑе пÑдÑйдÑÑÑ Ð·Ð²Ð¸ÑÐ°Ð¹Ð½Ñ Ð¾Ð±âÑкÑи {}.
ÐÑодÑкÑивнÑÑÑÑ
ÐеÑоди 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 оновлÑÑÑÑÑÑ Ð°Ð²ÑомаÑиÑно, коли маÑив змÑнивÑÑ. ЯкÑо бÑÑи ÑоÑнÑÑим, Ñо length вÑдобÑÐ°Ð¶Ð°Ñ Ð½Ðµ кÑлÑкÑÑÑÑ ÐµÐ»ÐµÐ¼ÐµÐ½ÑÑв в маÑивÑ, а ÑÐ½Ð´ÐµÐºÑ Ð¾ÑÑаннÑого елеменÑÑ Ð¿Ð»ÑÑ Ð¾Ð´Ð¸Ð½.
ÐапÑиклад, один ÐµÐ»ÐµÐ¼ÐµÐ½Ñ Ð· великим ÑндекÑом даÑÑÑ Ð²ÐµÐ»Ð¸ÐºÑ Ð´Ð¾Ð²Ð¶Ð¸Ð½Ñ:
let fruits = [];
fruits[123] = "ЯблÑко";
alert( fruits.length ); // 124
ÐвеÑнÑÑÑ ÑвагÑ, Ñо зазвиÑай ми не викоÑиÑÑовÑÑмо маÑив подÑбним Ñином.
ÐнÑий ÑÑкавий Ð¼Ð¾Ð¼ÐµÐ½Ñ ÑÑоÑовно влаÑÑивоÑÑÑ length â ÑÑ Ð¼Ð¾Ð¶Ð½Ð° пеÑезапиÑаÑи.
ЯкÑо ми вÑÑÑÐ½Ñ Ð·Ð±ÑлÑÑимо length, нÑÑого ÑÑкавого не вÑдбÑдеÑÑÑÑ. Ðле ÑкÑо зменÑимо, маÑив ÑÑане коÑоÑÑим. Цей пÑоÑÐµÑ Ð½ÐµÐ·Ð²Ð¾ÑоÑнÑй, напÑиклад:
let arr = [1, 2, 3, 4, 5];
arr.length = 2; // ÑкоÑоÑÑÑмо до двоÑ
елеменÑÑв
alert( arr ); // [1, 2]
arr.length = 5; // повеÑÑаÑмо попеÑÐµÐ´Ð½Ñ Ð´Ð¾Ð²Ð¶Ð¸Ð½Ñ ...
alert( arr[3] ); // undefined: ..., а Ð²Ð¸Ð´Ð°Ð»ÐµÐ½Ñ Ð·Ð½Ð°ÑÐµÐ½Ð½Ñ Ð½Ðµ повеÑÑаÑÑÑÑÑ
ÐÑож, найпÑоÑÑÑÑий меÑод оÑиÑÐµÐ½Ð½Ñ Ð¼Ð°ÑÐ¸Ð²Ñ Ñе: arr.length = 0;.
new Array()
ÐÑнÑÑ Ñе один ваÑÑÐ°Ð½Ñ ÑÑвоÑÐµÐ½Ð½Ñ Ð¼Ð°ÑивÑ:
let arr = new Array("ЯблÑко", "ÐÑÑÑа", "etc");
ÐÑн викоÑиÑÑовÑÑÑÑÑÑ ÑÑдÑе, адже викоÑиÑÑÐ°Ð½Ð½Ñ ÐºÐ²Ð°Ð´ÑаÑниÑ
дÑжок [] бÑлÑÑ Ð·ÑÑÑний ÑпоÑÑб. ÐÑÑм Ñого, new Array Ð¼Ð°Ñ Ð¿ÐµÐ²Ð½Ñ Ð¾ÑобливÑÑÑÑ.
ЯкÑо new Array викликаÑÑÑÑÑ Ð· одним аÑгÑменÑом, а Ñаме ÑиÑлом, вÑн ÑÑвоÑиÑÑ Ð¿Ð¾ÑожнÑй маÑив з довжиноÑ, Ñка доÑÑвнÑÑ ÑÑÐ¾Ð¼Ñ ÑиÑлÑ.
ÐодивÑмоÑÑ, Ñк можна завдаÑи ÑÐ¾Ð±Ñ Ð²ÐµÐ´Ð¼ÐµÐ¶Ð¾Ñ Ð¿Ð¾ÑлÑги:
let arr = new Array(2); // Ñи ÑÑвоÑиÑÑÑÑ Ð¼Ð°Ñив [2] ?
alert( arr[0] ); // undefined! елеменÑи вÑдÑÑÑнÑ
alert( arr.length ); // довжина 2
ÐÐ»Ñ Ñого, Ñоб позбÑÑиÑÑ ÑакиÑ
ÑÑÑпÑизÑв, ми викоÑиÑÑовÑÑмо квадÑаÑÐ½Ñ Ð´Ñжки [], ÑкÑо ÑÑлÑки ми дÑйÑно не маÑмо пÑиÑини Ð´Ð»Ñ Ð²Ð¸ÐºÐ¾ÑиÑÑÐ°Ð½Ð½Ñ Ð¼ÐµÑÐ¾Ð´Ñ new 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вÑн вÑдÑÑÑÐ¿Ð°Ñ Ð²Ñд кÑнÑÑ Ð¼Ð°ÑивÑ. ЯкÑоi >= 0, вÑн пÑаÑÑÑ Ñак Ñамо Ñкarr[i].
Ðи можемо викоÑиÑÑовÑваÑи маÑив Ñк двоÑÑоÑÐ¾Ð½Ð½Ñ ÑеÑÐ³Ñ Ð·Ð° Ð´Ð¾Ð¿Ð¾Ð¼Ð¾Ð³Ð¾Ñ Ð½Ð°ÑÑÑÐ¿Ð½Ð¸Ñ Ð¾Ð¿ÐµÑаÑÑй:
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)â нÑколи не викоÑиÑÑовÑйÑе!
ÐÐ»Ñ Ð¿Ð¾ÑÑвнÑÐ½Ð½Ñ Ð¼Ð°ÑивÑв, не викоÑиÑÑовÑйÑе опеÑаÑÐ¾Ñ == (Ñак Ñамо Ñк >, < Ñа ÑнÑÑ), ÑÐ¾Ð¼Ñ Ñо в ниÑ
Ð½ÐµÐ¼Ð°Ñ ÑпеÑÑалÑниÑ
меÑодÑв Ð´Ð»Ñ Ð¿Ð¾ÑÑвнÑÐ²Ð°Ð½Ð½Ñ Ð¼Ð°ÑивÑв. Ð¦Ñ Ð¾Ð¿ÐµÑаÑоÑи пÑаÑÑÑÑÑ Ð· маÑивами Ñк з обâÑкÑами, а Ñе не Ñе, Ñо нам поÑÑÑбно.
ÐаÑомÑÑÑÑ Ð´Ð»Ñ Ð¿Ð¾ÑÑвнÑÐ½Ð½Ñ Ð¼Ð°ÑивÑв викоÑиÑÑовÑйÑе Ñикл for..of, Ñоб поÑÑвнÑваÑи ÐµÐ»ÐµÐ¼ÐµÐ½Ñ Ð·Ð° елеменÑом.
Ðи повеÑнемоÑÑ Ð´Ð¾ маÑивÑв Ñа вивÑимо меÑоди додаваннÑ, видаленнÑ, вÑдокÑÐµÐ¼Ð»ÐµÐ½Ð½Ñ ÐµÐ»ÐµÐ¼ÐµÐ½ÑÑв Ñа ÑоÑÑÑÐ²Ð°Ð½Ð½Ñ Ð¼Ð°ÑивÑв в ÑоздÑÐ»Ñ ÐеÑоди маÑивÑв.
ÐоменÑаÑÑ
<code>, Ð´Ð»Ñ ÐºÑлÑÐºÐ¾Ñ ÑÑдкÑв â обгоÑнÑÑÑ ÑÑ Ñегом<pre>, Ð´Ð»Ñ Ð¿Ð¾Ð½Ð°Ð´ 10 ÑÑдкÑв â викоÑиÑÑовÑйÑе пÑÑоÑниÑÑ (plnkr, jsbin, codepenâ¦)