内置对象之数组Array()对象

本文详细介绍了JavaScript中的数组对象,包括创建方法、检测数组的技巧、增加和删除元素的操作,以及各种数组方法,如排序、去重和迭代方法等。重点讲解了数组排序的实现,包括价格排序案例,并探讨了every、some、filter、map和forEach等迭代方法的使用。
摘要由CSDN通过智能技术生成

目录

数组对象

数组对象的创建

 检测是否是数组的方法

 数组对象的增加和删除

筛选数组元素

数组对象方法

简单数组排序

数组的算法

数组去重

 数组去重函数封装

 数组排序

数组排序方法sort()

案例:价格排序

数组的迭代方法

 every(callBack)

 some(callBack) 

 filter(callBack)

 map(callBack)

 forEach(callBack) 


数组对象

数组是存储任意数据的集合,数组由索引和值组成,天生自带length属性,索引0对应第一项,1对应第二项依次类推,最后一项的索引是arr.length -1;

数组对象的创建

  • 字面量 : [] 不给数据就是空数组

  • 构造函数:new Array(); 不给数据就是空数组

// 字面量 
var arr = [10, 20, "hello", true, {
    name: "哈哈"
}];
console.log(arr);
console.log(arr.length);


// 构造函数
// 不传递参数 返回空数组
var arr1 = new Array(); //new反悔了数组类下具体的实例
console.log(arr1);


// 设置 原来没有就是增加 原来有就是修改
arr1[0] = 100;
arr1[1] = 200;
console.log(arr1);


// 传递一个参数  规定数组的长度  
var arr2 = new Array(10);
console.log(arr2); //[空属性 × 10]
// 设置 原来没有就是增加 原来有就是修改
arr2[0] = "哈哈";
console.log(arr2);


//  传递多个参数  设置数组中的数据
var arr3 = new Array(10,20,30,"哈哈");
console.log(arr3);


// length属性是一个可读可写的属性 (既可以获取又可以设置)
var arr4 = [10,20,30,100,200];
// 获取长度
console.log(arr4.length);

// 设置
arr4.length = 100;
console.log(arr4);

arr4.length = 2;
console.log(arr4);


// 删除数组末尾最后一项
var arr5 = [100,20,300,"哈哈",1000,2000];
console.log(arr5);

// arr5.length = 5;
// console.log(arr5);

arr5.length--;
console.log(arr5);
  • length属性可以改变原数组  

 检测是否是数组的方法

(1) instanceof  运算符 它可以用来检测是否为数组 

 (2)Array.isArray(参数);  H5新增的方法  ie9以上版本支持

// 翻转数组
        function reverse(arr) {
            // if (arr instanceof Array) {
            if (Array.isArray(arr)) {
                var newArr = [];
                for (var i = arr.length - 1; i >= 0; i--) {
                    newArr[newArr.length] = arr[i];

                }
                return newArr;
            } else {
                return 'error 这个参数要求必须是数组格式 [1,2,3]'
            }
        }
        console.log(reverse([1, 2, 3]));
        console.log(reverse(1, 2, 3));
        // 检测是否为数组
        // (1) instanceof  运算符 它可以用来检测是否为数组
        var arr = [];
        var obj = {};
        console.log(arr instanceof Array);
        console.log(obj instanceof Array);
        // (2) Array.isArray(参数);  H5新增的方法  ie9以上版本支持
        console.log(Array.isArray(arr));
        console.log(Array.isArray(obj))

 数组对象的增加和删除

  var arr1 = [10, 20, 30, 100, 200, 1000, 2000];
        /*
            push(数据,...);
            作用:在数组末尾进行增加
            参数:增加的数据,数据可以是一个也可以是多个,多个之间用逗号隔开
            是否改变原数组:改变
            返回值:返回增加后数组的长度
        */

        var resArr1 = arr1.push("哈哈", "呵呵");
        console.log(resArr1, arr1);


        /* 
            pop();
            作用:在数组末尾进行删除,删除一项
            参数:无
            是否改变原数组:改变
            返回值:返回删除的哪一项
        */

        var arr2 = [10, 20, 30, 100, 200, 1000, 2000];
        var resArr2 = arr2.pop();
        console.log(resArr2, arr2);



        /* 
            unshift(数据,...);
            作用:在数组开头进行增加
            参数:增加的数据,数据可以是一个也可以是多个,多个之间用逗号隔开
            是否改变原数组:改变
            返回值:返回增加后数组的长度
        */

        var arr3 = [10, 20, 30, 100, 200, 1000, 2000];
        var resArr3 = arr3.unshift({
            name: "哈哈"
        });
        console.log(resArr3, arr3);



        /* 
            shift();
            作用:在数组开头进行删除,删除一项
            参数:无
            是否改变原数组:改变
            返回值:返回删除的哪一项
        */

        var arr4 = [10, 20, 30, 100, 200, 1000, 2000];
        var resArr4 = arr4.shift();
        console.log(resArr4, arr4);


        // splice(startIndex,n);  
        // 作用:从startIndex索引开始删除n项
        // 参数:startIndex开始索引  n:个数
        // 是否改变原数组:改变
        //  返回值:将删除的每一项以一个新的数组进行返回 ,没有删除返回空数组
        var arr5 = [10, 20, 30, 100, 200, 1000, 2000];
        var resArr5 = arr5.splice(2, 3);
        console.log(resArr5, arr5);


        // splice(startIndex);  只传递开始索引,从当前索引开始删除到末尾
        var arr6 = [10, 20, 30, 100, 200, 1000, 2000];
        var resArr6 = arr6.splice(3);
        console.log(resArr6, arr6);

        // 替换
        // splice(startIndex,n,content,...);  从当前索引开始删除n项用content进行替换
        var arr7 = [10, 20, 30, 100, 200, 1000, 2000];
        var resArr7 = arr7.splice(2, 3, "哈哈", {
            name: "哈哈"
        });
        console.log(resArr7, arr7);


        // 增加
        // splice(startIndex,0,content,...);  从当前索引开始删除0项用content进行替换,插入到开始索引之前
        var arr8 = [10, 20, 30, 100, 200, 1000, 2000];
        var resArr8 = arr8.splice(2, 0, "哈哈", {
            name: "哈哈"
        });
        console.log(resArr8, arr8);

筛选数组元素

  // 有一个包含工资的数组[1500, 1200, 2000, 2100, 1800],要求把数组中工资超过2000的删除,剩余的放到新数组里面
        var arr = [1500, 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值