JS数组回忆


最近才开始写博客,主要是发现自己学的很多东西都忘掉了,
正好可以回忆复习一下。唉😔,真是学多少忘多少。

数组

数组的定义

var arr=[];
var arr= new Array();

这两个基本没什么区别,但是第二个new Array()里面只传了一个参数时,他会将其当作数组的长度而不是第一位的值。

数组的读和写

javascript的数组是基于对象的,所以平时哪怕没有赋值也就是undefined,并不会报错。

数组的常用方法

ES3.0:

改变原数组

push,pop,shift,unshift , sort , reverse , splice

push()

向数组添加数据的方法,在数组的最后一位添加数据
重写一下push方法:

Array.prototype.push = function () {
        for(var i=0; i<arguments.length; i++){
            this[this.length] = arguments[i];
            length++;
        }
    }
pop()

数组剪切数据的方法,把数组最后一位剪切出来,不需要传参,也没用

shift()和unshift()

unshift()是增加数据,与push不同的是它是在数组的前面添加数据
shift()是减数据,也是在前面减。

reverse()

将原数组逆转,并返回来

splice()

arr.splice(从第几位开始,截取多少长度,在切口处添加新的数据):也是一种剪切
可以用其在指定位置添加数据

sort()

用来给数组排序,且为升序排序但是以ACSCII码来排序
因为排序会有很多种排序,所以sort预留了一个编程接口可以在sort里面填一个匿名的function,可以让sort方法按function里面的来排序
规则:
1.必须写两个形参
2.看返回值
当返回值为负数时:那么前面的数放在前面
当返回值为整数时:那么后面的数放在前面
为0时,不动
举个栗子:

//升序
var arr=[1,10,2,5,3,4,40,];
    arr.sort(function(a,b){
        return a-b;
    })

//降序
 var arr=[1,10,2,5,3,4,40,];
    arr.sort(function(a,b){
        return b-a;
    })

这段代码是简化后的代码,至于为什么升序降序自己想一下吧,嘿嘿嘿。

//给一个有序数组,让他乱序
var arr=[1,2,3,4,5,6,7];
   arr.sort(function(){
       return Math.random()-0.5;
   })

不改变原数组

concat , join–>split,toString,slice

concat()

连接两个数组,在一个数组后面连接另一个数组

 var arr=[1,2,3,4,5];
   var arr1=[2,3,4,6];
   arr2=arr.concat(arr1);
   console.log(arr);
   console.log(arr1);
   console.log(arr2);

join–>split()

数组.join(“参数”):按照参数来连接数组
split(参数)是字符串的方法,可以将字符串拆分成数组
二者是互逆的

toString()

将数组转化成字符串

slice()

slice(从第一位开始截取,截取到该位)
slice(从第几位开始一直截取到最后)

类数组

(长得像数组,可以当数组用,但它并不是数组)

  1. 可以利用属性名模拟数组的特性
  2. 可以动态的增长length属性
  3. 可以强行让类数组调用push方法,则会根据length属性值的位置进行属性的全扩充

属性要为索引(数字属性),必须有length属性,最好加上push
例:

   var obj={
       "0":"a",
       "1":"b",
       "2":"c",
       "length":3,
       "push": Array.prototype.push,
       "splice":Array.prototype.splice
   }

类数组填充题:

   var obj={
       "2":"a",
       "3":"b",
       "length":2,
       "push": Array.prototype.push,
   }
   obj.push('c');
   obj.push('d');
   //问:调用完两个push后obj是什么样子的

答案:
类数组调用push填充例题
这里设计到了push的方法,push是将需要push的值传入到数组的obj.length然后length再++
可以参考上面的push()方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值