1-1:push()
向数组末尾添加一个或多个元素返回新数组的长度 let arr=[1,2,3] arr.push(4,5) console.log(arr)打印出来的结果为:(5) [1, 2, 3, 4, 5] 1-2:unshift()
向数组的开头添加一个或多个元素返回新数组的长度 let arr=[1,2,3] arr.unshift(4,5) console.log(arr)打印出来的结果为:(5) [4, 5, 1, 2, 3]
2-1:pop()
删除数组最后一个元素,如果数组为空,则不改变数组,返回undefined返回被删除的元素 let arr=[1,2,3,4,5] arr.pop() console.log(arr)打印结果(4) [1, 2, 3, 4] 2-2:shift()
把数组的第一个元素删除,若空数组,不进行任何操作,返回undefined返回第一个元素的值 let arr=[1,2,3,4,5] arr.shift() console.log(arr)打印结果(4) [ 2, 3, 4,5]
打印结果(5) [1, "2", 3, 4, 5]
let arr=[1,2,3,4,5] arr.splice(1,1) console.log(arr)打印结果(4) [1, 3, 4, 5]
打印结果1+2+3+4+5
打印结果(5) [1, 2, 3, 4, 5,]
let arr=["Mike","Doinb","Uzi","Mary","Faker","ClearLove"] console.log(arr.sort())打印结果(6) ["ClearLove", "Doinb", "Faker", "Mary", "Mike", "Uzi"]
打印结果(6) ["Uzi", "Mike", "Mary", "Faker", "Doinb", "ClearLove"]
打印结果(3) [3, 4, 5]
let arr=[1,2,3,4,5] console.log(arr.slice(2,4))打印结果(2) [3, 4]
打印结果(6) ["RNG", "EDG", "Uzi", "ClearLove", "TOP", "SKT"]
打印结果为1,2,3,4,5
从头至尾遍历数组,为每个元素调用指定的函数。 forEach有三个参数(数组元素,索引,数组本身)。
const data = [1, 2, 3, 4, 5]; //要求和的数组 let sum = 0; //初始为0 data.forEach(function (value) { sum+=value //将每个值累加到sum上 }) console.log(sum) //=>15 data.forEach(function (v,i,a) { a[i]=v+1 }) console.log(data) //=>[2,3,4,5,6]注:forEach无法在所有元素传递给调用函数之前终止遍历(无法使用break),如果要使用就使用try。 返回值:无。
map()方法将调用的数组每个元素传递给指定的函数,并返回一个数组。
let a=[1,2,3] let b=a.map(function (x) { return x*x }) console.log(b) //=>[1,4,9]注:map返回的是新数组,不修改调用的数组。如果是稀疏数组,返回的也是相同稀疏数组。 返回值:有,新的数组。
filtter()遍历数组,过滤出来符合条件的元素,放到一个新数组里面,如果没有就返回空。
let a=[1,2,3,4,5] let b=a.filter(function (x) { return x<3 }) console.log(b) //=>[1,2] let c=a.filter(function (x) { return x>5 }) console.log(c) //=>[]注:filter()会跳过稀疏数组中缺少的元素,返回的总书稠密的。 返回值:有,符合条件的数组。
every()方法就像数学中的“所有”,针对所有符合条件的返回true否则返回false。
let a=[1,2,3,4,5] let b=a.every(function (x) { return x<3 }) console.log(b) //=>false let c=a.every(function (x) { return x<6 }) console.log(c) //=>truesome()方法就像数学中的“存在”,但数组中至少存在一个元素符合判定条件则返回true, 否则false(一个都没有)。
let a=[1,2,3,4,5] let b=a.some(function (x) { return x<3 }) console.log(b) //=>true let c=a.some(function (x) { return x<1 }) console.log(c) //=>false注:一旦every()和some()确定该返回什么值它们就会停止遍历数组。 every()在判定数组时,第一次返回false后就返回false,如果判定一直返回true,他将遍历整个数组。 some()相反,第一次返回true就返回true,如果判定为false就遍历整个数组。 按照数学惯例,在空数组上调用时,every()返回true,some()返回false。 返回值:true或者false。
reduce()和reduceRight()方法使用指定的函数将数组元素进行组合,生成单个值。 reduce()有两个参数,。第一个是执行化简操作的函数。化简函数的任务就是用某种方法把两个值组合成或化简为一个值,并发回化简后的值。第二个值(可选)的参数是传递给函数的初始值。
let a=[1,2,3,4,5] let b=a.reduce(function (x,y) { return x+y },0) console.log(b) //=>15如上例所示,打印一下第一个参数x,为: 0,1,3,6,10, 第二个y,为:1,2,3,4,5。
如果把0换成1又会发生什么呢?接下来请看:
let a=[1,2,3,4,5] let b=a.reduce(function (x,y) { return x+y },1) console.log(b) //=>16结果变成了16,打印第一个参数x为:1,2,4,7,11,第二个还是初始值。 那么得出结论:第一次调用函数时,第一个参数是初始值,它就是传递给reduce()的第二个参数。在接下来的调用中,这个值就是上一次化简函数的返回值。在上面例子中第一次调用时的参数分别为0和1。将两者相加并返回1,再次调用时参数是1和2,返回3,以此类推…最后返回15。
而reduceRight()的工作原理跟reduce()一样,不同的是他按照数组索引从右到左来处理。
注:reduce()和reduceRight()都能接收一个可选的参数,它指定了化简函数调用时this关键字的值。第二个参数没有,则表示为默认值。 返回值:有。
indexOf()和lastIndexOf()搜索整个数组中具有给定值的元素,返回找到的第一个元素的索引或者如果没有找到就返回-1。 indexOf()从头至尾搜索,lastIndexOf()则相反。
let a=[1,2,3,4,5,4,3,2,1] let b= a.indexOf(3) let c= a.lastIndexOf(3) console.log(b) //=>2 console.log(c) //=>6注:indexOf()和lastIndexOf()不接受函数作为其参数。 返回值:第一个元素的索引。