> [ 'a', 'b', 'c' ][0]
'a'
Su teigiamais skaičiais [...].at( index )
atitinka [...][index]
.
Nauda atsiranda, kai reikia pasiekti narius nuo galo:
> [ 1, 2, 3 ].at( -1 )
3
Kairėje lygybės pusėje parašius kintamųjų vardus tarp laužtinių skliaustų galima jiems priskirti atitinkamus masyvo narius:
> [ a, b ] = [ 1, 2, 3 ]
[ 1, 2, 3 ]
> a
1
> b
2
> [ first, ...rest ] = [ 1, 2, 3 ]
[ 1, 2, 3 ]
> first
1
> rest
[ 2, 3 ]
Taip pat galima destructurinti ir funkcijų argumentus:
> ( ([ first ]) =>
... first
... )([ 3, 2, 1 ])
3
> arr = [ 'a', 'b' ]
> arr[1] = 'r'
> arr[2] = 'ray'
> arr
[ 'a', 'r', 'ray' ]
[ 1, 2, 3 ].length
3
....
> [ 1, ...[ 2, 3 ]]
[ 1, 2, 3 ]
"Įskleidžia" masyvą į kitą masyvą.
Dėmesio: skirtingai nuo objektų, į masyvus galima spread'inti ne viską, o tik Iterable rūšies reikšmes:
> [ ...false ]
Uncaught TypeError: false is not iterable
Naršyklėje:
> document.querySelectorAll( 'a' )
NodeList(3) [ a, a, a ]
> [ ...document.querySelectorAll( 'a' )]
Array(3) [ a, a, a ]
Kodui žemiau naudosime: arr = [ 1, 2, 3, 4, 5 ]
.
Šie metodai kviečiami kiekvienam masyvo nariui.
Kaip argumentas jiems būna paduodama funkcija. Ši funkcija gauna tokius argumentus:
Iterative metodai nepakeičia originalaus masyvo.
arr.every( item =>
item > 0
)
true
.arr.filter( item =>
item % 2
)
[ 1, 3, 5 ]
.arr.find( item =>
item > 2
)
3
.arr.findIndex( item =>
item > 2
)
2
.arr.findLast( item =>
item < 5
)
4
.arr.findLastIndex( item =>
item < 5
)
3
.arr.forEach( console.log )
Iškviečia nurodytą funkciją kiekvienam masyvo nariui. Grąžina undefined
. Šiuo atveju:
> arr.forEach( console.log )
1 0 [ 1, 2, 3, 4, 5 ]
2 1 [ 1, 2, 3, 4, 5 ]
3 2 [ 1, 2, 3, 4, 5 ]
4 3 [ 1, 2, 3, 4, 5 ]
5 4 [ 1, 2, 3, 4, 5 ]
undefined
arr.map( item =>
item * 2
)
[ 2, 4, 6, 8, 10 ]
.arr.some( item =>
item > 3
)
true
.Šie metodai kviečiami kiekvienam masyvo nariui.
Jiems paduodami du argumentai:
Funkcija. Ši funkcija gauna tokius argumentus:
Grąžinama paskutinės iškviestos funkcijos grąžinta reikšmė.
Pavyzdys:
> [ 1, 2, 3 ].reduce(
... ( a, b ) =>
... a + b,
... 0,
... )
6
arr.reduce(...)
arr.reduceRight(...)
Jei šie metodai kviečiami be argumento, jie surūšiuoja narius taip lyg jie būtų stringai (pagal abėcėlę). Pvz.:
> [ 1, 2, 10, 20 ].sort()
[ 1, 10, 2, 20 ]
Norėdami surūšiuoti ne abėcėline tvarka, kaip pirmą argumentą paduokite funkciją:
a, b
).a > b
a === b
0
,a < b
Lengviau galima atsiminti per tai, kad skaičiams surūšiuoti reikia naudoti a - b
:
> [ 2, 1, 10, 20 ].sort(
... ( a, b ) =>
... a - b
... )
[ 1, 2, 10, 20 ]
arr.sort(...)
arr
narių tvarka pasikeis). Grąžina jį.arr.toSorted(...)
arr
. arr
narių tvarka nepasikeis.arr.pop()
5
, o arr
reikšmė bus [ 1, 2, 3, 4 ]
.arr.push( 6, 8 )
7
, o arr
reikšmė bus [ 1, 2, 3, 4, 5, 6, 8 ]
.arr.reverse()
arr
reikšmė bus [ 5, 4, 3, 2, 1 ]
. Ji ir bus grąžinta.arr.shift()
1
, o arr
reikšmė bus [ 2, 3, 4, 5 ]
.arr.splice( 1, 2, 6, 7, 8 )
Vietoj nurodytos dalies įterpia naujus narius:
1
ištrins du narius (2, 3
).6, 7, 8
).arr
reikšmė bus [ 1, 6, 7, 8, 4, 5 ]
.[ 2, 3 ]
.arr.unshift( 6, 8 )
7
, o arr
reikšmė bus [ 6, 8, 1, 2, 3, 4, 5 ]
.arr.at( -1 )
5
.[ 1, [ 2, 3 ],[[ 4 ]]].flat( 1 )
[ 1, 2, 3, [ 4 ]]
.arr.includes( 3 )
true
.arr.indexOf( 3 )
Jei argumentas yra masyve, grąžina indeksą vietos, kur jis surastas pirmą kartą. Šiuo atveju 2
Jei argumento nėra masyve, grąžina -1
.
arr.join( ',' )
1,2,3,4,5
.[ 2, 2, 3 ].lastIndexOf( 2 )
Jei argumentas yra masyve, grąžina indeksą vietos, kur jis surastas paskutinį kartą. Šiuo atveju 1
Jei argumento nėra masyve, grąžina -1
.
arr.slice( 2, 4 )
[ 3, 4 ]
.arr.toSpliced(...)
arr.splice(...)
. Skirtumas tas, kad nepakeičia masyvo, o grąžina naują masyvą.