JavaScript的数组方法和操作

199 阅读4分钟

元素添加和删除

  • √为原数组改变,×为原数组不变,※不常用
  • push():给数组的末尾添加一个或多个元素,返回新添加的元素 √
var arr = [2,4,5];
arr.push(3,5,6);
console.log(arr);//[2, 4, 5, 3, 5, 6]
  • unshift():给数组的开头添加一个或多个元素,返回新数组的长度 √
var arr = [2,4,5];
arr.unshift(3,5,6);
console.log(arr);//[3, 5, 6,2, 4, 5]
  • concat():用于连接1个或多个数组,返回连接或克隆的新数组 ×
var arr = [2,4,5];
console.log(arr.concat());//[2, 4, 5]
console.log(arr.concat(9,7,8));//[2, 4, 5,9,7,8]
var arr2 = [1,23,43];
console.log(arr.concat(9,7,8));//[2, 4, 5, 1, 23, 43]
  • pop():和push对应,但功能相反,用于删除最后一个元素,返回删除的元素 √
var arr = [2,3,5];
console.log(arr.pop());//5
  • shift():与unshift相对应,但功能相反,用于删除第一个元素,返回删除的元素 √
var arr = [2,3,5];
console.log(arr.shift());//2
  • slice 和 splice
    • slice(n,m):从索引n开始获取到m处(不包含m),返回获取的新数组 ×
    var arr = [2,3,5];
    console.log(arr.slice(0));//[2,3,5]
    console.log(arr.slice(1,2));//[3,5]
    
    • splice(n,m):从索引n开始移除m个元素,返回移除的元素数组 √
    var arr = [2,3,5,6,7,8];
    console.log(arr.splice(1,3));//[3, 5, 6]
    
    • splice(n,m,x):从索引n开始移除m个元素,将新的x元素添加到这,返回移除的 √
    var arr = [2,3,5,6,7,8];
    console.log(arr.splice(1,3,0));//[3, 5, 6]
    
    • splice(n,0,m):从索引n开始,移除0个元素,将新的x元素添加到这,返回空数组 √
    var arr = [2,3,5,6,7,8];
    console.log(arr.splice(1,3,0));//[]
    
  • toString():该方法用于将一个逻辑转换为字符串,无参数,返回结果 ×
var arr = [2,4,5,6,7,9]
console.log(arr.toString());//"2,4,5,6,7,9"

排序方法

  • reverse():将数组倒着排序,无参数,返回倒排后的数组 √
var arr = [2, 4, 5, 6, 7, 9];
console.log(arr.reverse());//[9, 7, 6, 5, 4, 2]
  • sort():将数字或字母根据Unicode编码进行排序,无参数,返回排序后结果 √
    • 纯数字排序则不写参数,直接调用该方法
    var arr = [9, 7, 6, 5, 4, 2];
    console.log(arr.sort());//[2, 4, 5, 6, 7, 9]
    
    • 将数组从小到大排序(10以上),从大到小 b-a
    var arr = [2, 14, 5, 61, 7, 19];
    arr.sort(function(a,b){
        return a-b
    })
    console.log(arr);//[2, 5, 7, 14, 19, 61]
    

数组转换

  • join():将一个数组用指定分隔符分隔,参数分隔符(默认逗号),返回最后的字符串 ×
var arr = [2,3,4,5];
console.log(arr.join("-"));//2-3-4-5
  • split():将字符串按片段分隔创建数组,和join功能相反,默认的逗号创建
var str = "2:3:4:5:6";
console.log(str.split(":")); //["2", "3", "4", "5", "6"]
  • toLocaleString():将数组转为本地字符串,和toString类似,此方法用特定的分隔符来将生产的字符串链接起来 ※
  • valueOf():返回Array对象的原数值,通常都是在后台隐式调用,一般不会出现 ※

位置方法

  • indexOf():判断数组中是否存在一个内容,从开头开始检测,返回内容所在索引,没有返回-1 ×
var arr = [2,5,6,7,8,9];
console.log(arr.indexOf(2));//0
console.log(arr.indexOf(22));//-1
  • lastIndexOf():判断数组中是否存在一个内容,从尾部开始检测,返回内容所在索引,没有返回-1 ×
var arr = [2,5,6,7,8,9];
console.log(arr.lastIndexOf(2));//0
console.log(arr.lastIndexOf(22));//-1

迭代方法

  • every():对数组中的每一项都运行给定的函数直接量,如果该函数对每一项都返回true,则该方法返回true
var arr = [1,2,3,4,5,6,7];
var reuslt = arr.every(function(item,index,arr){
    return item > 5
})
console.log(reuslt);//false
  • filer():对数组中的每一项都运行给定函数,返回该函数返回true的项组成的对象
var arr=[1,2,3,4,5,6,7];
var res=arr.filter(function(item,index,arry){
    return item>5
})
console.log(res);//[6, 7]
  • forEach():对数组中每一项运行给定函数,需要注意的是,这个方法没有返回值,在编码的过程中使用这个方法会带来很多便利,因为该方法就有一个遍历数组元素的作用,不用每次写一个for循环来获取数组的每一项进行操作了
var arr = [2,5,6,7,8,9];
arr.forEach(function(item,index,arr){
 console.log(item);
})//2 5 6 7 8 9
  • map():对数组中的每一项运行给定的函数,返回每次函数调用的结果组成的数组,这里返回的是数组。
  • some():对数组中的每一项运行给定的函数,如果该函数对任一项都返回true,则该方法返回true,和every()相似,但every()是传入的函数需要每一项都满足条件,some()只要有一项满足就会返回true。
var arr = [1,2,3,4,5,6,7];
var reuslt = arr.some(function(item,index,arr){
    return item > 5
})
console.log(reuslt);//true

缩小方法

reduce():从数组第一项开始逐个遍历,使用指定函数将数组的元素进行整合,只生成单个的值,第一参数是执行化简单的函数,第二个参数是一个传递给函数的初始值

var arr = [1,2,3,4,4,5,6,6];
console.log(arr.reduce(function(x,y){
    return x+y
},0));//28
console.log(arr.reduce(function(x,y){
return x*y
},1))//5040
console.log(
    arr.reduce(function(x,y){
        return (x>y)?x:y
    })//6
);
  • reduceRight():该方法的使用和reduce()是一样的,这里可以联想到indexOf方法和 lastIndexOf()方法的关系,即reduceRight()方法是按照数组索引从高到低的处理数组