前端学习-JavaScript基础(数组下)

数组(Array)

数组的方法

这些方法是JavaScript自带的,可以直接对数组进行使用。

unshift、shift、push、pop 、join、splice、slice、concat、sort、reverse

1、unshift 给开头添加一个或多个元素,有返回值。

var arr=[1,2,3,4]
var a=arr.unshift('a')
console.log(arr)  //[a,1,2,3,4]
console.log(a)		//返回的是新数组长度 4

2、shift 删除数组第一个元素,有返回值。

var arr=[1,2,3,4]
var a=arr.shift()
console.log(arr)  //[2,3,4]
console.log(a)	//返回被删除的元素  1

3、push 给数组的末尾添加一个或多个元素,有返回值。

var arr=[1,2,3,4]
var a=arr.push('a')
console.log(arr)  //[1,2,3,4,'a']
console.log(a)	返回的是新数组长度 4

4、pop 删除数组最后一个元素,有返回值。

var arr=[1,2,3,4]
var a=arr.pop()
console.log(arr)  //[1,2,3]
console.log(a)	//返回被删除的元素  4

5、splice 对数组的增删改

var arr=[1,2,3,4,5]
//改:splice(开始的下标,删除的个数,添加新数据)
arr.splice(0,1,'a')  //['a',2,3,4,5]
//增  第二个参数为0就是不删除
arr.splice(1,0,'a')		//[1,'a',2,3,4,5]
//删  第三个值省略
arr.splice(1,0) 	//[1,3,4,5]

6、concat 数组的拼接

var arr=[1,2,3,4,5]
var brr=['a','b']
console.log(arr.concat(brr)) 	//[1,2,3,4,5,'a','b']

7、reverse 数组的反转

var a=[1,2,3,4,5]
console.log(a.reverse)  //输出 5  4 3 2 1

8、slice 截取数组

var a=[1,2,3,4,5]
//slice(开始截取的下标,结束的下标)  包前不包后
console.log(a.slice(1,3))  // [2,3,4]

//如果省略第2个参数,默认从开始下标截取到数组末尾
console.log(a.slice(1))  //[2,3,4,5]

9、join 将数组中的元素使用指定的连接符连接在一起

var arr = ['a','b','c'];
var str = arr.join('_') // 参数是连接符
console.log(str) // a_b_c

var str = arr.join() // 默认使用逗号连接
console.log(str) // a,b,c

var str = arr.join('')
console.log(str) // abc

10、sort 数组的排序

var arr = [8,6,3,7,1,2];
arr.sort() // 默认升序
console.log(arr) // [1,2,3,6,8]

arr.sort(function(a,b){  // a代表前面的数,b代表后面的数
    return a-b; // 升序 - 如果a-b>0,则交换位置
    return b-a; // 降序 - 如果b-a>0,则交换位置
})
ES5新增数组方法(常用)

1、indexOf 查找数组的开头第一次出现的下标

var arr=[1,2,2,3,4,5,5,6]
console.log(arr.indexOf(2)) // 找到2的下标为1
console.log(arr.indexOf('a'))  //没找到返回-1

2、lastIndexOf 返回一个指定的字符串值最后出现的位置;

var arr=[1,2,2,3,4,5,5,6]
console.log(arr.lastIndexOf(5)) // 6
//有2个值时,(查找的数据,开始检索的位置)
console.log(arr.lastIndexOf(2,7))

2、forEach

forEach() 用于遍历数组的,本身是不支持的 continue 与 break 语句

var arr=[ 1,2,3,'a','b','c']
arr.forEach(function(value,number,array)){
    console.log(value)    //遍历出的元素
	console.log(number)		//每个数据对应下标
	console.log(array)		//当前遍历的数组
}

效果如下图:

请添加图片描述

3、map

遍历数组,将每个元素都经过函数处理,处理成新的元素,将所有新的元素组成一个新的数组返回。

arr.map(function(value,number,array){}),参数与forEach里的一样。

var arr=[1,2,3,4]
var brr=arr.map(function(num){  //value给改了名num
    var  newnum = num + num*10
    return newnum
})
console.log(brr)

4、filter

先过滤数组 在 遍历数组,将数组中满足指定条件的元素,组成新的数组并返回。

arr.filter(function(value,number,array){}),参数与forEach里的一样。

var arr=[1,2,3,4,5,6,7]
var brr=arr.map(function(num){  //value给改了名num     
    return num>5
})
console.log(brr)

简单排序

冒泡排序

相邻的2个元素进行大小比较,并交换。

var arr=[ 4,1,5,2,5,2,7]  		//定义数组
for(var a=0;a<arr.length-1;a++){      //遍历数组
	for(var j=0;j<arr.length-1-a;j++){     // //排一轮 [1,4,5,2,5,2,7]
        //循环一次,前一个与后一个比较大小,前一个比后一个大就进行换位
        if(arr[j]>arr[j+1]){    //从小到大排列
           var temp=arr[j]
           arr[j]=arr[j+1]
            arr[j+1]=temp
           }
    }
}
console.log(arr);

请添加图片描述

选择排序

每次排序找到最大值或最小值放在最前面。

var arr=[5,2,7,23,41,1] 
for(var j=0;j<arr.length-1;j++){
	for(var i=j+1;i<arr.length;i++){    //第一轮排序[1,2,7,23,41,5]
        if(arr[j]>arr[i]){			//前一个比后一个大,交换位置
           var temp=arr[i]
           arr[i]=arr[j]
            arr[j]=temp
           }
    }
}
console.log(arr);

请添加图片描述

图片出自https://www.cnblogs.com/xaimicom/p/9189471.html 侵权删

数组去重

把数据里重复的数据清除掉。这是其中一种方法,还有其他方法。

   var arr=[1,1,2,2,3,4,1,3,5,5]
		//遍历数组 arr.length要-1
    for(var a=0;a<arr.length-1;a++){
		//a+1 下标最大+1
        for(var i=a+1;i<arr.length;i++){
            if(arr[a]===arr[i]){
                arr.splice(i,1)   //删除下标为i的元素 ,i为开始下标,运行一次删除一个
                i--
            }
        }
    }
    console.log(arr)

*第二种:将不重复的元素都放在一个空数组中(我不会,所以把思路记下来,好用来复习)

思路:

1、 从arr中将不重复的元素找到

2、先将arr中的第一个元素放在空数组中

3、遍历arr,判断arr中的每个元素是否在brr中,如果在,不放进去,如果不在,就放进去

var arr=[1,1,2,2,3,4,1,3,5,5]
var brr=[]
// 遍历arr
for(var i=1; i<arr.length; i++) {
    // arr[i]是arr中的每个元素
    // 要判断每个元素是否在brr中 - 需要遍历brr
    for(var j=0; j<brr.length; j++) {
        if(arr[i] === brr[j]) {
            // arr[i] === brr[j]说明brr中已经有了arr[i]了 ,结束循环
            break;
        }
    }
    // 如果上面循环结束了,if也没有成立过一次,就放进去
    if(j === brr.length) { 
        brr.push(arr[i])   //push可以添加一个或多个元素,上面有提到
    }
}
console.log(brr);

*第三种:利用对象中的键是不重复的

思路:

1、遍历数组,把元素放到对象中

2、将对象中所有键都放在一个数组中

3、遍历对象得到所有的键,然后将所有的键都放在新的数组中

var arr=[1,1,2,2,3,4,1,3,5,5]
var ob={}
 for(var i=0; i<arr.length; i++) {
   // arr[i] 是每个值 - 当做ob的键放在ob中
    ob[ arr[i] ] = typeof arr[i]
 }
//定义新数组存放
var brr=[]
//遍历数组,把每个元素放到对象里
for(var i in ob){
     brr.push( ob[i] === 'number' ? Number(i) : i  )
}
console.log(brr);

引用对象作为跳板,感觉更麻烦了,咳咳我不会先你记下来。

多维数组转一维数组

//定义一个多维数组
var arr=[
    [1],
    [1,2,3],
    ['a','b',[4,5,[6,7,[8]]]],9
    
];

// 定义空数组
var brr=[]
//定义函数
function fn(arr){
    // 遍历数组
    for(var i=0;i<arr.length;i++){
        //判断是否是object类型
        if(typeof arr[i] === "object"){  
            // 是数组就递归
            fn(arr[i])
        }else{
            // 如果不是数组就放brr中
            brr.push(arr[i])
        }
    }
}
//调用
fn(arr)
console.log(brr)  
//控制台结果: [1, 2, 2, 3, 4, 5, 5, 6, 7, 8, 9, 11, 12, 12, 13, 14, 10]

昨天晚上熬太晚,今天没精神,感觉学习效率极低,然后打乒乓球运动一下,岔气了心脏贼贼难受。今天晚上就早点记录复习,小命要紧。各位小伙伴也不要经常熬夜哦,一起学习冲冲冲。
在这里插入图片描述

  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值