数组

数组

  1. 数组的声明
    (1)字面量 var arr=[1,2,3]
    (2)构造函数 new Array()
    ①声明数组同时赋值 new Array(1,2,3)
    ②声明数组同时定义数组的长度 new Array(10)

  2. 数组的操作
    (1)利用数组的索引,操作数组某个具体的元素。arr[idx],idx取值为0到数组的长度-1
    (2)数组的长度 arr.length
    (3)数组的遍历 for循环

  3. 数组的方法
    (1) 增删改,原数组会改变。
     ① arr.push(item)   往数组arr后面推入一个数组元素
     ② arr.unshift(item)  往数组arr前面推入一个数组元素
     ③ arr.pop()      删除数组arr的最后一个元素
     ④ arr.shift()      删除数组arr的第一个元素
     ⑤ arr.splice(idx,delNum,item[,item])
     参数:idx 索引 delNum 删除元素的数目 itme元素(可添加多个元素);
     作用:删除元素 splice(idex,delNum)
        添加元素 splice(idex,0,itme)
        修改元素 splice(idex,1,itme)
    增加方法的返回值:数组的长度
    删除方法的返回值:被删除的那个元素
    splice方法返回值:被删除的元素组成的数组

    (2) arr.reverse() 将原数组arr的元素颠倒顺序,返回倒序后的数组

    • 原数组会改变

    (3) arr.sort() 原数组排序,返回值为排序后的数组

    • 默认用字符的ASCII进行比较
    • sort(function(a,b){return a-b;}) 从小到大排序
    • sort(function(a,b){return b-a;}) 从大到小排序
    • 原数组会改变

    (4) arr.slice(start[,end]) 返回值为裁切数组的某一部分组成的数组

    • 从start开始到end(但不包括end所对应的元素)
    • end省略,代表裁剪到数组的最后一项
    • 支持负数 (数组最后一项索引可以为-1)
    • 原数组不会改变

    (5) arr.Join(“分隔符”) 将数组拼成字符串,返回值为拼接后的字符串

    • 默认分隔符为逗号
    • 原数组不会改变

    (6) arr.concat(数组1[,数组2]) 返回一个新数组

    • 这个新数组是由调用这个方法的数组arr和参数组成
    • 原数组不会改变

排序(冒泡排序,选择排序,快速排序)(leng为数组长度)

1.冒泡排序(相邻两个元素add[j],add[j+1]依次比较)

  • 当前元素跟下一个元素对比
  • 把最大的逐个往后排列
    第一层for循环i为比较的轮数,i=1从第一轮开始,i<leng;
    第二层for循环j为每轮比较的次数,j=0从索引0开始,j<leng-i;

2.选择排序(用当前元素add[i]依次与后面元素add[j]比较)

  • 把当前元素分别跟后面的元素对比
  • 把最小的逐个往前排列
    循环变量i,j为索引号;
    第一层for循环i要遍历所有元素(是循环结束i遍历所有元素);
    第二层for循环j要遍历i索引号后边的所有元素,用add[i]和add[j]进行比较;

3.快速排序

  • 利用递归实现(循换递归调用自己,当数组长度小于等于1时,函数返回数组)
    (1)找出中间的索引号(数组元素若奇数,用parseInt()取整);
    (2)splice()删除数组中间索引的元素,返回被删除的组成的数组,然后获取被删除元素 的值。
    (3)定义max、min两个数组,大于中间数就放在max数组里面,小于中间数就放在min数 组里面。

数组的传递及复制

  1. 传递 var brr=arr;
    此时传递的是arr在堆中的地址给brr,所以一旦brr的值修改,arr也会受影响。

  2. 复制
    (1) For循环拷贝arr里面的每个元素
    (2) 也可以用slice(0),切出整个数组

多维数组

1.数组套数组arr=[[],[],[]]

  • var arr = [[“小白菜”,“萝卜”,“土豆”],[“肥牛”,“鸡肉”,“牛肉丸”]];

Es5新增数组的方法

  • (arr数组里面可以套对象,若操作键的值,通过item.key)
  1. 遍历方法(fn有三个参数:item:数组中的每一项元素 idx:索引 arr:当前数组)

    (1) arr.forEach(fn) 等同于for循环

arr.forEach(function(item,idx,arr){
     console.log(item);
})

   (2) arr.map(fn)
     返回一个数组(数组长度等于原数组),返回的数组里面的元素是什么取决于在fn中返回的值

var res = arr.map(function(item,idx,arr){
	return item*10;
	//也可以返回字符串拼接(return '<li>'+item+'</li>')
})

   (3) arr.filter(fn)
     返回一个数组,存放执行fn后返回true的数组元素,利用这个方法可对 数组元素进行过滤

var res = arr.filter(function(item,idx,arr){
    return item>20;
})

   (4) arr.some(fn)
     判断数组中是否有一个元素满足return的条件,有即返回true.

   (5) arr.every(fn)
     判断数组中元素是否满足return的条件,有一个不满足条件,最终返回 false

  1. 归并方法 arr.reduce(fn,initval)
    (1) fn的参数:
    ①prev:上一次函数的返回值
    • 若reduce的第二个参数initval有值,则prev第一次的值为initval
    • 若reduce的第二个参数initval没有值,则prev第一次的情况会默认以索引为0 对应的元素的prev的值
      ②item:当前数
      ③idx:当前索引
      ④arr:数组
var arr = [10,20,30,40,50,55];
var res = arr.reduce(function(prev,item,idx,arr){
	console.log(prev,item,idx);
	return prev+item;
},0)
console.log(res);

静态方法

Array.isArray()判断是否为数组

数组的索引方法

(1) indexOf(keyword[,startIdx])
(2) lastIndexOf(keyword[,startIdx])

  • startIdx可省略,若存在代表从startIdx开始查找
  • 返回keyword所在数组中的索引值,如果数组不存在keyword,则返回-1
  • 应用: 判断数组中是否存在某个值
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值