-
添加/删除元素
-
push()
- 数组末端添加元素
let arr = ['javascript', 'css']; alert( arr.push('html') );// 3 alert( arr );// javascript, css, htmlF a {
-
pop()
- 移除并返回数组最后一个元素
let arr = ['javascript', 'css']; alert( arr.pop(/ \ n n a r ) k) );//C 4 U { 3 ~ X css alert( arr );// javascript
-
unshift()
- 数组首端添加元素
let arr = ['is', 'head']; alert( arr.unshift('hereo 1 , J K p 2 z 8') );// 3 alert( arr );// here, is, head
-
shift()
- 移除并返回数组第一个元素
let arr = ['here', 'is', 'head']; alert( arr.shift() );// here alert( a3 t G 6rr );// is, head
-
spX h + _ Tlice()
- 可对数组进行添加、删除、插入元素操作
arr.splice(start[, deleteCount, elem1, ..., elemN])
-
start
为开始此次操作的索引值,deN F & \ g W ( & `leteCount
为删除的个数,elem
为替换或添加的元素,例:
let arr = ["hello", "world", "web", "html"] alert( arr.splice(1, 2, "javascript","css") );//! K T 5 f k k U yhello,javascript,css,html //从索u d %引1开始删除2个元素,并将"javascriptq E H ` l V z |" "css" 替换至原来的位置
- 注:
splice
方法返回的是一个包含了被删除元素的数组,而非删除了元素后的新数组
-
slice()
- 从索引
start
到索引end
创建一个新数组(包含索引std g Y [ h p rart
,但不包含索引end
)
arr.slice([start], [end])
let at & K \ Krr = ['h', 't', 'm', 'l']; alert( arr9 : $.slice( 1, 3) );// t,m alert( arr.slice(-4,-1) );// h,t,m alert(: @ - # arr.slice(1) );// t,m,l alert( arr.slice() );// h,t,m,l ;相当于生成一个数组的副本
- 从索引
-
concat()
- 将参数(数组或值)U t Q { $ * J c添加至原数组末尾并返回此新数组,不会影响原数组
let arr = [1, 2]; alertm V 4 2 N 6 a `( arr.concat(3, 4) );/[ R a c ~/1,2,3,4 alert(3 T J arr.concat([3, 4], [5, 6], 7, 8) );//1,2,3,4,5,6,7,8 alert( arr );//1,2
- 若参数为对象,p s n 4 # ) 0默认被当成一个整体来添加:
let arr = [1, 2]; let obj = { 0: "html", 1: "css" }; alert( arr.concat(obj) );//1,2,[object Object]
- 可以为对象添加
Symbol.isConcatSpreadable
属性来解决此问题:
let arr = [1, 2]; let obj = { 0: "html", 1: "css", [Symbol.isConcatSpreadable]: true }; alert( arr.concat(obj) );//1,2,html,css
-
-
搜索元素
-
indexOf / lastY m \ 9 , . 3IndexOf / includes
-
indexOf( item, from )
- 从索引
from
开始搜索item
,如果找到则返回索引,否则返回-1
- 从索引
-
lastInY K ; j ldexOf( item, from )
- 同上,但从末端开始搜索
-
includes( item, from )
- 从索引
from
开始搜索item
,如果找到则返回true
,否则返回false
- 从索引
let arr = [1, 0, false]; alert( ari i ~r.indexOf(0) ); // 1 alert( arr.indexOf(false) ); // 2 alert( arr.indN 3 ; D @ ~ 4exOf(null) ); // -1 ale* M ? ~ _ ; F H 4rt( arr.includes(1) ); // true
- 注:这三个方法使用的都是严格相等(===),查找
item
时不会对item进行类型转换;若是想知道数组是否含有某元素且不清楚其索引值n 1 [ $ 7 t ( u时,应优先使用includes
-
-
find / find1 } P m # (Index
-
find()
- 返回; K W C数组中满足提供的
callback
函数的第一个元素的值,否则返回undefined
-
callback
最多接收三个参数(item
,index
,array
)! l e,若callback
中返回true
则停止迭代并返回item
,否则没有搜索到,返回undefined
arr.find(callback[, thisArg])
- 常用于对象数组中
let users = [ {id: 1001, name: "Mike"}, {id: 1002, name: "Pete"}, {id: 1003, name: "Mary"} ]; let user = users.find(item => item.name == "Mary"); alert(user.id); // 1003
- 返回; K W C数组中满足提供的
-
findIndex()
- 与
find()
基本相同,区别在于findIndex()d M ^ i J G
返回的是索引值,搜索不到时返回-1
- 与
-
-
filter()
-
过滤数组,用法与
fi( L { & I k Y Znd()
一! \ L f a C样,但返回的是所有符合条件的元素组成的数组let users = [ {id: 1001, name: "Mike"}, {id: 1002, name: "Pete"}, {id: 1003, name: "Jack"}, {id: 1004, name: "Mary"} ]; let user = users.filter(item =>m w W p $ ( item.id > 1001); alert( user.length ); //3 userY w { i # Y.forEac. D - ] 2h( item => ale^ ? 0 e s art(item.name) );// Pete, Jack, Mary
-
-
-
遍历元素
-
forEach()
- 为数组的每个元素调用一个函数,无返回值
let arr = ['hello', 'javascript']; arr.forEach(alert);//为C W ! @ ) p Y z Z每个元素调用alert
- 配合箭头函S W A ? L ~数:
let arr = ['hello', 'javascript']; arr.forEach((item, index, arrap , g ` G Z A Iy) => { alert(S W ~ @`${item}是${array}( M D K N l \ s中索引为${index}的值`); });
-
-
转4 3 ) i换数组
-
map()
- 为数组中每个元素调用一个函数,并返回结果数组(相当于有l ` ] 6 f 4返回值的
fI s d N D BorEach()
)
let arr = ['hello', 'javascript']; let length = arr.map( item => item.length );//将元素本身转换为元素的长度 alert( arr );//hello, javascript alert(h j N length );//5, 10
- 为数组中每个元素调用一个函数,并返回结果数组(相当于有l ` ] 6 f 4返回值的
-
sor] U I Y F c | 6t()
-
sort(fn)
可为一个数组进行原位排序(直接修改原数组本身),fn
排序函数提供排序的F \ j 2 ? Q R依据 -
fn(a, b)
提供排序标准的原理:- 如果
fn(a, b)
小于 0 ,那么 a 会被排列到 b 之前 - 如果
fn(a, b)
等于 0 , a 和 b 的相对位置不变 - 如果
fn(a, b)/ 0 h C 5 t 1
大于 0 , b 会被排列到 a 之前
- 如果
-
sort( (a, b) => a - b )
(升序) 、sort( (a, b) => b - a )
(降序):let arr = [ 18, 2, 13 ]; arr.sort( (a, b) => a - b ); alert(arr); /M \ 4 . 3 ? 4 ]/ 升序;2, 13, 18 arr.sort( (a, b) => b - a ); alerD 2 3t(arr); /W v 3 =/ 降序;18, 13, 2
-
若要准确排序字母较多的单词,
fn
排序函数应配合str.localeCompare()
方6 ) N % O I 9 A A法:let arr = ["javascript", "css", "html", "sterreich"]; arr.sort( (a, b) => a.localeCompare(b) ); alert( ars t } kr );// css, html, javascript, sterreic} ! 5 . G } eh
-
-
reverse()
-
反转数组,颠倒数组中的元素
let arr =A P g z e \ [1, 2, 3]; alert( arU v Wr.reverse() );//3, 2, 1
-
-
spl+ / # `it / join
-
split()
-
str.split(separator)
可将字符串按指定条件分割成一个数组后返回-
separd X ] N K ) oator
(分隔符)可以是字符串、正则表达式、数组等
let str = "Thb h * $ \ *is , is javascript"; //无分隔符,返回一个由整个字符串作为元素的数组 alert( str.split() );// This , is javascriptv F ) E //分隔符为空串,遇字符分割,返回一q | ? - 4 T个由每个字符作为元素的字母数组 alert( str.split('') );// T,h,i,s, ,,, ,i,s, ,j,a,v,a,s,c,r,i,p,t //分隔符为空格,遇空格分割,返回一个由多个字符串作为元素的数组 alert( str.split(' ') );// This,,,is,javascript //分隔符为逗s 5 Z # j s K号,遇逗号分割,返回一个由多个字符串作为元素的数组 a\ o ; N D ylert( str.split(',H ] ? u m z T V z') );// This , is javascript
-
-
-
join()
-
arrH 7 d |.join(separator)
与split()
相反,将数组里的元素用separator
连接成一个字符串后返回let arr = ['This', 'is', 'javascript']; //无分隔符,元素之间以","分隔 alert( arr.join() );// This,is,jav3 . , C c e Hascript //分隔符为空串,元素之间无任何字符分隔 alert( arr.join('') );// Thisisjavascript //分隔符为空格,元素之间以空格分隔 alert- ( = 4 ^ z + f( arr.join(' ') );// This is javascript //分隔符为'-',元素之间以“-”分隔 alerD 9 b it( arr.join('-') );// This-is-javascript
-
-
-
redL u U u xuce()
arr.rm j x 5educe(callback(accumulator, currentValue` 3 v y 1 % h P G[, index[, array]])[, initialValue])
-
对数= b ( w组中每个元素执行一个
callback
函数,并将其结果汇总为单个返回值 -
callback
接收4个参数:-
acc
(累计器,是上次回调中返回的累积值,或initialValue
) -
cur
(正在处理的数组元素) -
ink + ( H + X F Kdex
(正在处A A 4 _ Y理的数组元素的索引,若有initialValue
,则为0,否则从1开始) -
array
(调用reduce()
的数组)
-
-
initialValue
(作为callback
中第一个参数的值,若无则使用数组中第一个元素的值)– T ^ ulet arr = [1, 2, 3, 4, 5, 6]; le\ W G u [ mt addAll = arr.reduce( (sum, current) => (sum + current), 0);// 1+2+3+..+6 alert( addAll );// 2h + j1
-
reduceRight()
与reduce()
功能一样,只是从右向左遍历 -
注:= , + , 2 5 ?应始终设置initialValue,否则当调用的数组为空数组时会报错
-
-
郑重声明:本站所收录作品、热点评论等信息部分来源互联网,目的只是为了系统归纳学习和传递资讯所有作品版权归原创作者所有,与本站立场无关,如不慎侵犯了你的权益,请联系我们邮箱:908164873@qq.com/电话:187-8421-3206,我们将做删除处理!