JS数组常用和不常用的方法总结

会改变原数组的方法

以下六种push(),pop(),shift(),unshift(),splice(),sort(),reserve(),我自己比较常用的有unshift(),splice()

添加数组元素

push()方法

在数组结尾处向数组添加一个新的元素(其余元素索引未改变),
参数为被添加元素

let fruits = ['苹果','香蕉','橘子']
fruits.push('西瓜')  //向数组添加一个新元素
console.log(fruits);  //['苹果','香蕉','橘子','西瓜']

返回值为改变后新数组的长度

let fruits = ['苹果','香蕉','橘子']
let x = fruits.push('西瓜')  //x的值为4
unshift()方法

在数组开头处添加一个新元素(其余元素索引都向后移一位),
参数为被添加元素

let fruits = ['苹果','香蕉','橘子']
fruits.unshift('西瓜')  //向数组开头添加一个新元素
console.log(fruits);  //['西瓜','苹果','香蕉','橘子']

返回值为改变后新数组的长度

let fruits = ['苹果','香蕉','橘子']
let x = fruits.unshift('西瓜')  //x的值为4

删除数组元素

pop()方法

删除数组中最后一个元素(其余元素索引未改变)

let fruits = ['苹果','香蕉','橘子']
fruits.pop()  //删除数组的最末尾元素
console.log(fruits);  //['苹果','香蕉']

返回值为被删除元素

let fruits = ['苹果','香蕉','橘子']
let x = fruits.pop()  //x的值为'橘子'
shift()方法

删除数组首个元素(其余元素索引都向前移一位)

let fruits = ['苹果','香蕉','橘子']
fruits.shift()  //删除数组的首位元素
console.log(fruits);  //['香蕉','橘子']

返回值为被删除元素

let fruits = ['苹果','香蕉','橘子']
let x = fruits.shift()  //x的值为'苹果'

特殊方法splice()

1、用于向数组添加新项

第一个参数定义添加新元素的位置(索引号);
第二个参数定义删除元素数目;
第三个及之后的参数定义新添加元素。

let fruits = ['苹果','香蕉','橘子']
fruits.splice(1,0,'西瓜','芒果')  //在索引号为1的位置添加'西瓜'和'芒果'
console.log(fruits);  //["苹果", "西瓜", "芒果", "香蕉", "橘子"]

返回值为被删除元素组成的数组(如果有)

let fruits = ['苹果','香蕉','橘子']
x = fruits.splice(1,1,'西瓜','芒果') //在索引号为1的位置删除一个元素并在该位置添加'西瓜'和'芒果'
console.log(x);  //["香蕉"]
console.log(fruits);   //["苹果", "西瓜", "芒果", "橘子"]
2、用于删除数组元素

只定义第一个和第二个参数(删除元素个数,不为0)。

let fruits = ['苹果','香蕉','橘子']
fruits.splice(1,1)  //在索引号为1的位置删除1个元素
console.log(fruits);  //["苹果", "橘子"]

数组排序

sort()方法

默认让数组按照字母排序,返回值为排序后的新数组

let fruits = ["Banana", "Orange", "Apple", "Mango"]
x = fruits.sort()  // 让数组按照字母排序
console.log(x);   // ["Apple", "Banana", "Mango", "Orange"]
console.log(fruits);  // ["Apple", "Banana", "Mango", "Orange"]

给数值数组排序

let nums = [98, 57, 87, 36, 7]
x = nums.sort(function(a, b){return a - b})  //从小到大
console.log(x);  // [7, 36, 57, 87, 98]
y = nums.sort(function(a, b){return b - a})  //从大到小
console.log(y);  // [98, 87, 57, 36, 7]
reverse()方法

将原数组顺序翻转,返回值为翻转后的新数组

let fruits = ["Banana", "Orange", "Apple", "Mango"]
x = fruits.reverse()  // 让数组顺序翻转
console.log(x);   // ["Mango","Apple","Orange","Banana"]

不改变原数组的方法

数组合并和裁剪

concat()方法

合并两个数组或是一个数组和多个元素,类似于向数组添加元素
参数可以为一个数组或是元素,返回值为合并后的新数组

let fruits = ["Banana", "Orange", "Mango"]
let fruits2 = ['葡萄','香蕉','西瓜']
fruitsArr = fruits.concat(fruits2)  // 合并fruits和fruits2
console.log(fruitsArr);  //["Banana", "Orange", "Mango", "葡萄", "香蕉", "西瓜"]
slice()方法

用数组的某个片段切出新数组,
参数:第一个为开始索引,第二个为结束参数(不包括)

let fruits = ["Banana", "Orange", "Mango", "Apple", "Pear", "Lemon"]
fruitsCut = fruits.slice(1,3)  // 剪切索引从1到3之前的元素作为新数组
console.log(fruitsCut);   // ["Orange", "Mango"]

不定义第二个参数时,裁剪从开始参数之后所有元素作为新数组

let fruits = ["Banana", "Orange", "Mango", "Apple", "Pear", "Lemon"]
fruitsCut = fruits.slice(3)  // 剪切索引从3开始的所有元素作为新数组
console.log(fruitsCut);   // ["Apple", "Pear", "Lemon"]

数组迭代

对每个数组项进行操作

forEach()方法

遍历数组的每个元素
参数:第一个为每个元素,第二个为该元素索引号,第三个为数组本身
常用的为前两个参数
接受回调函数对数组进行操作

let fruits = ["Banana", "Orange", "Orange"]
fruits.forEach((item,index) => {
      console.log(item);  //分别输出Banana,Orange,Orange
      console.log(index);  //分别输出0,1,2
});
indexOf()方法

搜索元素值在数组中第一次出现的位置,返回索引值,没有找到返回-1
参数为被查找元素

let fruits = ["Banana", "Orange", "Mango"]
let x = fruits.indexOf('Mango') // 查找'Mango'
console.log(x);  // x值为2
let y = fruits.indexOf('Apple')  // 查找'Apple'
console.log(y);  // y值为-1
filter()方法

过滤出符合条件的元素组成一个新数组
参数:第一个为每个元素,第二个为该元素索引号,第三个为数组本身
回调函数中return限制条件

let nums = [98, 57, 87, 36, 7]
let numsFil = nums.filter((item,index) => {
       return item > 50  // 过滤出大于50的元素成为新数组
})
console.log(numsFil);  // [98, 57, 87]
reduce()方法

可以用统计符合条件元素总数
参数:第一个为总数(初始值/先前返回值),第二个参数为每个元素,第三个参数为元素索引号,第四个参数为数组本身
常用的为前两个参数

let nums = [98, 57, 87, 36, 7]
let total = nums.reduce((pre,val) => {
       if(val<50){  // 条件为值小于50
            pre++   // 符合条件时pre加1
       }
       return pre  // 不符合时返回pre
},0)               // 接收初始值,不写时默认为0
console.log(total);   // total值为2
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值