4-数组

    科技2025-11-05  11

    遍历数组

    foreach()for-in 语句结构Object.keys() 方法

    数组的某个位置是空位,与某个位置是undefined不一样。若是空位,使用数组的foreach() 方法、for-in结构以及Object.keys() 方法进行遍历,空位都会被跳过。


    使用Array

    判断数组 Array.isArray() 判断一个值是否为数组

    增删数组 1.push() —在尾部添加元素 【用 push() 方法合并两个数组:Array.push.apply(arr1,arr2)】

    2.pop() —删除数组最后一个元素,并返回该元素

    push() 和 pop() 方法结合使用,构成“后进先出”的栈结构

    3.shift()—删除数组第一个元素,并返回该元素

    push() 和 shift() 方法结合使用,构成“先进先出”的队列结构

    4.unshift()—在数组的第一个位置添加元素

    合并数组 concat()—用于多个数组的合并

    转换为字符串 join() —以参数作为分隔符,将所有数组成员组成一个字符串返回 split()—把字符串转换为数组,第一个参数为分隔符

    截取数组 slice()—提取数组的一部分,返回一个新数组,原数组不变【左闭右开】

    第一个参数为起始位置(从0开始),第二个参数为终止位置(但该位置的元素本身不包括在内)若参数为负数,则表示倒数计算位置一个重要应用,将类似数组的对象转为真正的数组 array.prototype.slice.call({0:‘a’,1:‘b’,length:2}) //[‘a’,‘b’]

    splice()—删除原数组的一部分元素,并可以在被删除的位置添加新元素,返回值是被删除的元素(会改变原数组) 第一个参数是删除的起始位置,第二个参数是被删除的元素个数,若后面还有参数,则表示这些就是被插入数组的元素

    排序数组 1.reserve()—颠倒数组(会改变原数组) 2.sort()—排序(会改变原数组) 【注意】sort()方法不是按照大小排序,而是按照对应字符串的字典顺序排序,故101排在11前面。

    以下代码则是从小到大排序(从大到小 return b-a 即可)

    c.sort(function(a,b){ return a-b })

    定位元素 1.indexOf()—给定元素在数组中第一次出现的位置,若没有则返回-1

    可接受第二个参数,表示搜索的开始位置

    2.lastindexOf()—给定元素在数组中最后一次出现的位置,若没有则返回-1

    迭代数组 map()

    map()—对数组所有元素依次调用一个函数,根据函数结果返回一个新数组map() 方法接受一个函数作为参数。该函数调用时,map() 方法会将其传入三个参数,分别是当前元素,当前位置和数组本身。map() 方法不仅用于数组,还可用于字符串,用来遍历字符串的每个字符。但不能直接使用,要通过函数的call() 方法间接使用,或者先将字符串转为数组,然后使用。var upper=function(x){ return x.toUpperCase(); }; console.log([].map.call('abc',upper)) //[ 'A', 'B', 'C' ] console.log('abc'.split('').map(upper)) //[ 'A', 'B', 'C' ] map() 方法还可接受第二个参数,表示回调函数执行时this所指向的对象var a=[1,2,3,4,5]; [2,3].map(function(e){ console.log(this[e]) },a) //3,4 若数组有空位,map() 方法的回调函数在这个位置不会执行,会跳过数组的空位,undefined和null不会跳过

    迭代数组 forEach()

    forEach() 方法与map() 方法很相似,也是遍历数组的所有成员,执行某种操作,但forEach() 方法一般不返回值,只用来操作数据。如果需要有返回值,一般用map() 方法。forEach() 方法也可以接受第二个参数,用来绑定回调函数的this关键字forEach() 方法无法中断执行,总是会将所有成员遍历完forEach() 方法会跳过数组的空位,但不跳过undefined和null也可用于类似数组的对象和字符串

    过滤数组

    filter()—参数是一个函数,所有数组成员依次执行该函数,返回结果为true的成员组成一个新数组返回。该方法不会改变原数组。filter() 方法的参数函数可以接受三个参数(当前元素的值,当前元素位置,整个数组)filter() 方法还可接受第二个参数,指定测试函数所在上下文对象(即this对象)

    验证数组

    some()—只要有一个数组元素的返回值是true,则整个方法的返回值就是trueevery()—所有元素的返回值都是true,才返回true,否则返回false

    【对于空数组,some() 方法返回false,every() 方法返回true】

    上述两个方法的函数参数都接受三个参数(当前元素,当前位置,整个数组)上述两方法还可接受第二个参数,用来绑定函数中的this关键字

    汇总数组

    reduce() —从左到右依次处理数组成员

    reduceRight() —从右到左依次处理数组成员

    此两方法的第一个参数都是函数,该函数接受以下四个参数:: (1)累积变量,默认为数组的第一个成员 (2)当前变量,默认为数组的第二个成员 (3)当前位置(从0开始) (4)原数组 【前两个必须,后两个可选】

    利用reduce() 方法,可以对数组求和

    Array.prototype.sum=function(){ return this.reduce(function(first,second){ return first+second; }) }; console.log([2,3,4,1,5].sum()) //15

    如果要对累积变量指定初值,可以把它放在reduce() 和reduceRight() 方法的第二个参数

    console.log( [1,2,3,4,5].reduce(function(x,y){ return x+y; },10)) //25

    上面代码中,指定参数x的初值为10,数组从10开始累加,此时y是从数组的第一个成员开始遍历。

    Processed: 0.009, SQL: 8