JS中数组的api方法 及数组案例

分三块记忆,一块改变原数组,另一块不会改变原数组,第三块遍历数组

改变原数组

1、push() ---------- 向数组的末尾添加多个元素,并返回新的长度。

    let  a =  [1,2];
    let item = a.push(4);  // 3,返回新的长度。
    console.log(a); // [1,2,4]

2、pop() ---------- 删除数组的最后一个元素,并且返回这个元素。

    let  a =  [1,2];
    let item = a.pop();  // 2
    console.log(a); // [1]

3、unshift() ---------- 向数组的开头添加多个元素,并返回新的长度。

    let  a =  [1,2];
    let item = a.unshift(8);  //输出3 返回新的长度
    console.log(a); // [8,1,2]

4、shift() ---------- 删除数组的第一个元素,并返回这个元素。

    let  a =  [1,2];
    let item = a.shift();  //1
    console.log(a); // [2]

删除的,返回删除的元素。

添加的,返回数组的长度。

push---添尾 |  pop---删尾  |  unshift---添头  |  shift---删头

5、sort() ---------- 数组排序,并返回这个数组

参数可选: 规定排序顺序的比较函数。【深入了解移步另一篇笔记】

没传比较函数,就默认字母升序。

6、splice() ---------- 添加/删除数组元素,返回被删除的项目

array.splice(index,number,item1,item2....)

参数:

  • index:整数,规定添加/删除项目的位置
  • number:要删除的项目数量。如果设置为 0,则不会删除项目
  • item1, ...: 可选,向数组添加的新项目
let a =[1,2,3,4]
let item = a.splice(0,2,8); // [1,2] 从位置0开始删除2个元素(包括0)
console.log(a); // [8,3,4]  原数组被改变

7、reverse() ---------- 倒序


不改变原数组

1、slice() ---------- 选择元素

array.slice(begin,end)

let a= [7,6,5,4];
let b=a.slice(0,2); 

console.log(a)  //[7,6,5,4]
console.log(b)  //[7,6]  从位置0开始,取到位置2结束(包头不包尾)

2、indexOf() ---------- 查找数组是否存在某个元素,返回下标

找到就返回下标,找不到就返回-1

可用于数组去重

functon unique(arr) {
    let res = []
  	for (let i = 0; i < arr.length; i++)){
        if (res.indexOf(arr[i]) === -1) {
          	res.push(arr[i])
        }
  	}
  	return res
}

unique([1,1,2,2,3,3]) //[1,2,3]

3、join() ---------- 把数组中的所有元素通过指定的分隔符进行分隔放入一个字符串,返回生成的字符串。

类型转换:数组类型转字符串

语法:array.join(str)

参数:

  • str 指定要使用的分隔符,默认使用逗号作为分隔符。
    let a= ['hello','world'];
    let str=a.join(); // 'hello,world'
    let str2=a.join('+'); // 'hello+world'

4、cancat() ---------- 用于连接两个或多个数组。

    let a = [1, 2, 3];
    let b = [4, 5, 6];
    //连接两个数组
    let newVal=a.concat(b); // [1,2,3,4,5,6]

遍历数组

1、forEach() --------- 遍历数组

 forEach 遍历数组,不能使用 break 语句或使用 return 语句中断。

语法:array.forEach(function(currentValue, index, arr), thisValue)

参数:

  • currentValue 数组当前遍历的元素,默认从左往右依次获取数组元素。
    index: 数组当前元素的索引,第一个元素索引为0,依次类推。
    arr: 当前遍历的数组。

let arr = ['a', 'b', 'c', 'd']
arr.forEach((item, index) => {
     console.log(item + '-----' + index);
})

2、filter () --------- 过滤原始数组,返回新数组

语法:new_array = arr.filter(function(currentValue, index, arr), thisArg)

参数:

  • urrentValue 数组当前遍历的元素的值
    index: 数组当前元素的索引
    arr: 数组本身。

let arr = [7,4,6,9,14]
let result = arr.filter((item, index) => {
     return item>10
})

console.log(result)  //[14]

数组案例

1、去除数组中指定的值

let arr=[0,1,0,2,0,3,0,4,0,5]

//去除数组中的所有的0

function quchu(num){
let newarr =[]
for(let i=0;i<arr.length;i++){
    if(arr[i]!=num){
    newarr.push(arr[i])
    }
}
console.log(newarr)
}

quchu(0) //[1,2,3,4,5]

2、数组去重

let arr=[0,1,0,2,0,3,0,4,0,5]

//数组去重

let newarr =[]
for(let i=0;i<arr.length;i++){
    if(newarr.indexOf(arr[i])==-1){
    newarr.push(arr[i])
    }
}
console.log(newarr)  //[0,1,2,3,4,5]

3、数组翻转

let arr = [1,2,3]

//数组翻转 第一种
let newarr = arr.reverse()
console.log(newarr)

//数组翻转 第二种
let newarr2 = []
for(let i=0;i<arr.length;i++){
    newarr2.unshift(arr[i])
}
console.log(newarr2)

4、统计数组中出现次数最多的数字,并统计个数

思路:利用对象的键值对来存储 每个数的出现次数

let arr=[1,2,2,3,3,3,3,3,8]

//统计每个数字的出现次数

let obj={}   //定义一个对象来存放数字(key)和次数(value)
for (let i=0;i<arr.length;i++){
   var key=arr[i]
   if(obj[key]){
        obj[key]++
    }else{
        obj[key]=1
    }
}

console.log(obj)  // 输出{1: 1, 2: 2, 3: 5, 8: 1}

//接下来,找出value最大的值
let maxcount=0
let maxnum=''
for(let key in obj){
    if(obj[key]>maxcount){
        maxcount=obj[key]
        maxnum=key
    }
}

console.log('最大值是'+maxnum+ ',出现次数为' + maxcount ) //最大值是3,出现次数为5

5、冒泡排序

let arr=[5,4,3,2,1]

// 将数组从小到大排序 即冒泡排序

for(let i=0;i<arr.length-1;i++){
//外层循环,控制第几位进入比较
    for(let j=0;j<arr.length-1-i;j++){
        //内层循环,控制这一位比较多少轮
        if(arr[j]>arr[j+1]){
            //前一个数比后一个大,就交换位置
            var temp = arr[j]
            arr[j] = arr[j+1]
            arr[j+1]=temp
        }
    }
}

console.log(arr) //[1,2,3,4,5]

6、查找数组中某个数字出现的位置和次数

let arr=[1,2,2,2,3]

function search (num){
    let count=0  //出现次数
    let index=arr.indexOf(num)
    while(index!==-1){
        count++
        console.log('出现位置:'+ (index+1))
        index=arr.indexOf(num,index+1) //indexOf的第二个参数可选,决定从哪里开始查找     
    }
    console.log('出现次数:'+count)
}

search(2)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值