Javascript数组总结

今天主要梳理一下数组的相关内容:

var arr=[1,2,6];

数组有以下几个特点:

  1. 有序性
  2. 紧密型
  3. 关联性
  4. 数据的添加和查找都是按照索引(下标)
  5. 数组中存储的元素的总量是可变的
  6. 数组长度的改变会引起数组的改变
  7. 数组被创造出大量的方法使用它,造成API过多
  8. 数组必须按照索引顺序依次排列
  9. 数组的删除 添加 查找都是很耗费时间的 因为每次都需要重新去排列每个元素

一、数组的常用方法:
pop push shift unshift map forEach filter some every reduce
concat join slice splice indexOf lastIndexOf fill sort reverse toString()

1、对数组增加删除,原数组都会改变
1 push:在数组末尾添加一个元素,返回长度,原数组改变
2 pop:删除数组尾部的元素,并返回删除的元素,原数组改变
3 shift:删除第一个元素,并返回删除的元素**,原数组改变**
4.unshift:在数组的第一位前面添加一个元素并返回长度,元素组改变

2、遍历数组
1 map :有返回值,回调函数有三个参数,第一个是元素,第二个是索引,第三个是数组,返回一个新的数组
2 forEach :无返回值,回调函数有三个参数,第一个是元素,第二个是索引,第三个是数组

3、按需求返回结果
1 some 主要有部分数组元素满足条件就返回true,
2 every 所有的数组元素都要满足条件才会返回true
3 filter 返回一个新的数组,数组内容是满足条件的,返回一个新的数组

4、数组的查找
1 find 返回满足条件离他最近的那个元素
2 indexOf 查找某一个元素是否在数组中,返回值大于-1即为找到,否则说明该元素不存在
3 lastIndexOf 从后往前查找

5、数组的转换
1、sort : 从大到小或从小到大排列
2、reverse:反转
3、toString():转成字符串

6、其它
1、concat:连接两个数组
2、slice:截取元素,返回一个新的数组,原数组不改变
3、splice:截取、替换元素,返回一个截取后的新数组,原数组发生改变
join:用特定的符号连接数组

二、数组的判定

1、es6:  Array.isArray(obj);

2、es5  
arr.constructor === Array;
Objec.prototype.toString.call(arr)=="[object Array]";

三、数组的转换

1、es6
Array.from(arr)
2、es5
Array.prototype.concat.apply([ ],inputs);
Array.prototype.slice.call(inputs);
[ ].slice.call(inputs);
[ ].concat.apply([ ],inputs);
解析:重构一下slice方法:
主要用到的知识点:
1/ Array.prototype.slice=b.slice();[b指的是实例化的对象]
2/ call,apply改变this指向

class Array1{
   constructor(){
   }
   slice(start,end){
        console.log(this);
        start=Number(start);
        end=Number(end);
        if(isNaN(start))start=0;
        if(isNaN(end))end=this.length;
        if(start<0)start+=this.length;
        if(end<0)end+=end+this.length;
        var arr=[];
        for(var i=start;i<end;i++){
            arr.push(this[i]);
        }
        return arr;
      }
   }
   var b = new Array1();
   //看出以下三种方式都可以将列表转为数组,通过改变了this的指向
   var c= b.slice.call(inputs);
   var d = b.slice.apply(inputs);
   //这里的this通过call改变了后,由原先的Array1类,变成了inputs这个列表
   // var test = Array1.prototype.slice.call(inputs);
   console.log(test,c,d);

四、数组的一些方法的应用
1、利用filter方法进行数组去重

var arr=[1,5,6,8,9,4,5];
var test = arr.filter((item,index)=>{
    return arr.indexOf(item,index+1)<0;
})
 console.log(test)

2、利用reduce方法可以进行归并求和【购物车求价钱总和:已经选择的价钱】

var arr6 = [
    {id:1001,price:100,selected:false},
    {id:1002,price:100,selected:true},
    {id:1003,price:100,selected:true},
    {id:1004,price:100,selected:false},
]
var sum = arr6.reduce((value,item)=>{
   value += item.selected ? item.price : 0;
   return value;
},0);
console.log(sum);

3、数组可以存储多种类型的数据,数组型对象也是使用比较多的

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值