数组常用的方法-必须背下来

数组常用的方法(背下来,越熟悉越好)

如何学习数组的方法呢?从以下4点学习

  • 方法的含义和作用
  • 方法的实参(类型和含义)
  • 方法的返回值
  • 原来的数组是不是会发生改变

一、数组增删改方法(增删改的方法一定会修改原有的数组)

1、push:向数组末尾增加内容

@params 多个任意类型
@return 新增后数组的长度
    const animals = ['pigs', 'goats', 'sheep'];
    
    const count = animals.push('cows');
    console.log(count);
    // expected output: 4
    console.log(animals);
    // expected output: Array ["pigs", "goats", "sheep", "cows"]
    
    animals.push('chickens', 'cats', 'dogs');
    console.log(animals);
    // expected output: Array ["pigs", "goats", "sheep", "cows", "chickens", "cats", "dogs"]

2、unshift 向数组开始位置增加内容

 @params 多个任意类型
 @return 新增后数组的长度
    const array1 = [1, 2, 3];
    
    console.log(array1.unshift(4, 5));
    // expected output: 5
    
    console.log(array1);
    // expected output: Array [4, 5, 1, 2, 3]

3、pop 删除数组的最后一项

 @params 
 @return 删除的那一项
    const plants = ['broccoli', 'cauliflower', 'cabbage', 'kale', 'tomato'];
    
    console.log(plants.pop());
    // expected output: "tomato"
    
    console.log(plants);
    // expected output: Array ["broccoli", "cauliflower", "cabbage", "kale"]
    
    plants.pop();
    
    console.log(plants);
    // expected output: Array ["broccoli", "cauliflower", "cabbage"]

4、shift 删除数组的第一项

@params 
@return 删除的那一项
    const array1 = [1, 2, 3];
    
    const firstElement = array1.shift();
    
    console.log(array1);
    // expected output: Array [2, 3]
    
    console.log(firstElement);
    // expected output: 1

5、splice 实现数组的增加、删除、修改

  • 删除
    @params n,m 都是数字 从索引n开始,删除m个元素(m不写,是删除到末尾)
    @return 把删除的部分用新数组存储起来返回
    let ary=[10,20,30,40,50,60,70,80,90];
    let res=ary.splice(2,4);
    console.log(res,ary);//[30,40,50,60] [10,20,70,80,90]
    
    //基于这种方法考科一清空一个数组,把原始数组中的内容以新数组存储起来
    ary.splice(0);//[10, 20, 70, 80, 90]
    
    //删除最后一项
    ary.splice(ary.length-1);
    //删除第一项
    ary.splice(0,1);
  • 增加、修改
    @params

    n,m,x 从索引n开始删除m个元素,用x占用删除的部分
    n,0,x 从索引n开始,一个都不删,把x放到索引n的前面

    @return 把删除的部分用新数组存储起来返回

    let ary=[10,20,30,40,50];
    let res=ary.splice(1,2,'AAA');
    console.log(res,ary);//[20, 30]   [10, "AAA", 40, 50]
  
    
   ary.splice(3,0,"哈哈哈",'ooo','111')
    console.log(res,ary);[20, 30]  [10, "AAA", 40, "哈哈哈", "ooo", "111", 50]
    //向数组末尾追加
    ary.splice(ary.length,0,"aaa")
    
    
    //向数组开始追加
    ary.splice(0,0,"aaa")

二、数组的查询和拼接

此组方法中数组不会改变

1、slice:实现数组的查询

@params startIndex,endIndex 都是数字  从索引startIndex开始,找到索引为endIndex的地方(不包含endIndex这一项)
@return 把找到的内容以一个新数组的形式返回,不改变原来数组
let ary=[1,2,3,4]
let res=ary.slice(1,3);
console.log(res) // [2, 3]
let ary=[1,2,3,4]
let res=ary.slice(1);//endIndex 不写是找到末尾
console.log(res) // [2, 3, 4]

数组的克隆,参数0不写也可以,真正意义上的数组克隆

let ary=[1,2,3,4]
let res=ary.slice(0);
console.log(res) // [1, 2, 3, 4]

思考:

  • 1、如果startIndex/endIndex为负数?
  • 2、如果startIndex>endIndex?
  • 3、如果是非有效数字?
  • 4、如果startIndex、endIndex的值都比最大索引大?

这种克隆方式叫浅克隆
深度克隆怎么处理

2、concat:实现数组拼接

@params 多个任意类型值 

@return 拼接后的新数组
let ary1=[1,2,3,4];
let ary2=[5,6,7,8];

let res=ary1.concat('666',ary2);
console.log(res) // [1, 2, 3, 4, "666", 5, 6, 7, 8]

3、把数组转化为字符串

把数组转化为字符串,原来数组不变

  • toString
    @params

    @return 转换后的字符串,每一项用逗号分隔(原来数组不变)

let ary=[1,2,3];
let res=ary.toString();
console.log(res) // '1,2,3'
console.log([].toString())//""
console.log([12].toString())"12"
  • join

    @params 指定的分隔符(字符串格式)

    @return 转换后的字符串(原来数组不变)

let ary=[1,2,3];
let res=ary.join();
console.log(res)  // '1,2,3' 不指定分隔符默认逗号

res=ary.join('')
console.log(res) //'123'

res=ary.join('|')
console.log(res) //'1|2|3'

res=ary.join('+')
console.log(eval(res)) //6 eval把字符串变成JS表达式

4、检测数组中是否包含某一项

  • indexOf/lastIndexOf/includes
/*
 *   indexOf/lastIndexOf:检测当前项在数组中第一次或者最后一次出现的索引值(IE6-8中不兼容)
 *   @params 
 *      要检索的这一项内容
 *   @return 
 *      这一项出现的位置索引值(数组),如果数组中没有这一项,返回结果是-1
 *    原数组不变
*/
let ary=[1,2,3,3,2,1];
let res=ary.indexOf(1);
console.log(res)  // 0

res=ary.lastIndexOf(1);
console.log(res)  // 5

//想验证ary中是否包含"zyx"
if(ary.indexOf('zyx')===-1){
    //不包含
}

//也可以直接使用ES6新提供的includes方法判断

if(ary.includes('zyx')){
    //包含:如果存在返回的是true
}

5、数组排序或者排列

  • reverse
/*
 *   reverse:把数组倒过来排列
 *   @params 
 *      
 *   @return 
 *      排列后的新数组
 *   原来数组改变
*/

let ary=[1,2,3,4,5];
ary.reverse();
console.log(ary);//[5, 4, 3, 2, 1]
  • sort
/*
 *   sort:实现数组的排序
 *   @params 
 *      可以没有,也可以是个函数
 *   @return 
 *      排序后的新数组
 *   原来数组改变
*/

let ary=[5,3,1,8,9];
ary.sort();
console.log(ary);//[1, 3, 5, 8, 9]

//sort 方法中如果不传递参数,是无法处理10以上数字排序,(默认会按照第一个数字排序,不是我们想要的效果)
ary=[15,13,21,28,9];
ary.sort();
console.log(ary);//[13, 15, 21, 28, 9]

//想要实现多位数正常排序,需要给sort传递一个函数,函数中返回a-b升序,返回b-a实现降序
ary.sort((a,b)=>return a-b);
console.log(ary);// [9, 13, 15, 21, 28]

5、遍历数组中的每一项的方法

forEach

/*
 *   forEach:遍历数组中的每一项内容
 *   @params 
 *      回调函数
 *   @return 
 *      
 *   原来数组不变
*/

let ary=[12,34,55,66,78];
//数组中有多少项函数就默认执行多少次
//每一次执行函数:item是数组中当前要操作的这一项,index是当前索引
ary.forEach((item,index)=>{
    
})

map
filter
find
reduce
some
some
every
···

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值