JS中的数组


数组

数组数据类型:
也是JS中的一种数据类型,是引用数据类型,数据是存储在堆区的。
数组中每一个数据,都有对应的编号,这个编号叫索引,也叫下标。下标默认是从0开始的。
可以通过索引或下标操作数组中的某个数据。
操作: 查看,添加,修改,删除 说到操作,就要想到增删改查(CRUD)。


提示:以下是本篇文章正文内容,下面案例可供参考

一、创建数组

1.通过字面量创建数组

var arr = [1,“a”,123,true,und,888]; // []表示一个数组 arr是变量
在[]中就可以写一堆的数据。

<script>
        // 1)通过字面量的形式创建数组
        // 1这个数据的下标是   0
        // "a"这个数据的下标是 1
        // 2这个数据的下标是   2
        // .....
        var arr1 = [1,"a",2,"b",true,undefined];
        console.log(arr1);
</script>

结果如下:
在这里插入图片描述

2.通过构造器创建数组

JS内部帮我们提供了一个构造函数,也叫类 Array
var arr = new Array(); // Array是类 new一个类,就得到一个对象

<script>
	// 10不是代表10这个数据,代表是这个数组中可以放10个元素(数据)
       var arr = new Array(10);
    // a,b,c就代表数组中的三个数据
       let arr2 = new Array("a","b","c")
       console.log(arr2);
     // arr2是对象 对象中有很多属性或方法  通过打点,就可以调用这个属性或方法
     // length代表数据中的长度
       console.log(arr2.length);
 </script>

结果如下:
在这里插入图片描述

二、操作数组

1.数组length属性

数组中有一个length属性 表示数组的一个长度。length属性可读可写。

  • 读:获取数组的长度
  • 写:设置数组的长度
    当我们设置的比本身长度小,那么就相当于删除
    当我们设置的比本身长度大,那么多出来的就是空补齐
 <script>
        // 数组中的每一个数据可以叫数组的元素
        var arr = ["你好","世界"]; // 通过字量面的形式创建一个数组
        // arr.length  叫读属性    arr.length = xxx 叫写属性 重新给属性赋值
        console.log(arr.length); // 长度 表示你数组中装了几个元素
        
		arr.length = 1; // 重新给length赋值
        console.log(arr);
        console.log(arr.length);

        arr.length = 5; // 重新给length赋值
        console.log(arr);
        console.log(arr.length);
</script>

结果如下:
在这里插入图片描述

2.数组索引操作

默认情况下,数组中的每一个元素都索引,从0开始,依次+1。最后一个元素的索引是lenght-1。

            索引也是一个可读可写的属性:
                读:读取的是指定索引位置的数据
                 => 如果数组确实有这个索引,那么就是这个位置的数据
                 => 如果数组没有这个索引位置,那么就是und
                写:设置指定索引位置的数据
                 => 如果有这个索引位置,那么就给这个索引位置重新设置数据
                 => 如果这个索引位置不存在,那么就是添加一个新数据
	<script>
        let arr = ["hello","world","nihao"];
        console.log(arr); // arr代表整个数组
        console.log(arr[0]);  // 代表数组中的第1个元素
        console.log(arr[100]); 
        console.log("------------------");
        arr[0] = "新来的"; // 把一个新的数据赋值给数组中的第1上元素
        arr[110] = "最后一个"
        console.log(arr);
    </script>

结果如下:
在这里插入图片描述

3.数组的遍历

所谓的遍历就是指把数据中的每一个元素都取出来的。
使用for循环进行遍历,除了for循环,还有其它方案,后面说。

	<script>
        let arr = ["a","b","c","d","e","f"];
        for(var i=0; i<arr.length; i++){
            console.log(arr[i]);
        }
    </script>

结果如下:
在这里插入图片描述

4.其它的操作

(1)push()

=> 语法:数组.push(数据1,数据2,数据3…)
=> 作用:把新的数据,追加到数组的末尾位置
=> 返回值:新数组的长度
=> 影响原数组

	<script>
        let arr = ["hello","nihao"];
        // r表示push方法的返回值
        let r = arr.push("世界")
        console.log(arr); // 数组
        console.log(r);
    </script>

结果如下:
在这里插入图片描述

(2)pop()

=> 语法:数组.pop()
=> 作用:删除数组中最后一个数据
=> 返回值:被删除的数据
=> 影响原数组

	<script>
        let arr = ["hello","nihao"];
        let r = arr.pop()
        console.log(arr);
        console.log(r);
    </script>

结果如下:
在这里插入图片描述

(3)unshift()

=> 语法:数组.unshift(数据1,数据2,数据3…)
=> 作用:把新的数据,插入到数组的前面位置
=> 返回值:新数组的长度
=> 影响原数组

	<script>
        let arr = ["hello","nihao"];
        let r = arr.unshift("xixi")
        console.log(arr);
        console.log(r);
    </script>

结果如下:
在这里插入图片描述

(4)shift()

=> 语法:数组.shift()
=> 作用:删除数组中第一个数据
=> 返回值:被删除的数据
=> 影响原数组

	<script>
        let arr = ["hello","nihao"];
        let r = arr.shift()
        console.log(arr);
        console.log(r);
    </script>

结果如下:
在这里插入图片描述

(5)reverse()

=> 语法:数组.reverse()
=> 作用:方法将数组中元素的位置颠倒,并返回该数组。数组的第一个元素会变成最后一个,数组的最后一个元素变成第一个
=> 返回值:返回该数组
=> 影响原数组

	<script>
        let arr = ['one', 'two', 'three'];
        // reverse是改变了原数据,返回一个新的数组
        let newArr = arr.reverse();
        console.log(arr);
        console.log(newArr);
    </script>

结果如下:
在这里插入图片描述

(6)sort()

=> 语法:数组.sort()
=> 作用:对数组的元素进行排序,并返回数组。
=> 返回值:返回数组
=> 影响原数组

	<script>
        // let arr = ['one', 'two', 'three'];
        // 默认排序顺序是在将元素转换为字符串,然后比较它们的UTF-16代码单元值序列时构建的
        let arr = [4,2,9,12,40,11]
        // let arr = ["hello","abc","qaz","uuo"];

        // sort是方法   sort()  sort("abc")  //abc是实参的
        // 函数调用的时的参数是实参
        // 函数声明时的参数是形参
        // sort(function(){})  function(){}是一个参数  只不过实参是一个函数
        // 在JS中函数也是数据
        let r = arr.sort(function(a,b){
            // return a-b;  // 升序
            return b-a; // 降序
        });
        console.log(arr);
        console.log(r);
    </script>

结果如下:
在这里插入图片描述

(7)splice()

=> 语法:数组.splice(开始索引,多少个)
=> 作用:删除或替换现有元素或者原地添加新的元素来修改数组,并以数组形式返回被修改的内容。此方法会改变原数组。
=> 1)截取数组 2)替换新内容
=> 截取: 数组.splice(开始索引,多少个) 如果第2个参数不写,默认就截取到最后
=> 替换新内容: 数组.splice(开始索引,多少个,替换数据1,替换数据2…)
=> 把替换数据按照顺序插入到你截取的位置
=> 返回值:返回一个数组
=> 影响原数组

	<script>
        let arr = ['one', 'two', 'three', "four", "five", "six"];
        // 1表示索引 2表示截取两个
        // 作用1:截取数组中的某一个部
        let res = arr.splice(1, 2);
        console.log(res);
        // 也影响了原数组
        console.log(arr);
    </script>

结果如下:
在这里插入图片描述

	<script>
        let arr = ['one', 'two', 'three', "four", "five", "six"];
        let res = arr.splice(1,2,"xixi","haha")
        console.log(res);
        console.log(arr);
    </script>

结果如下:
在这里插入图片描述

(8)concat()

=> 语法:数组.concat(数组1,数组2…)
=> 作用:合并两个或多个数组。此方法不会更改现有数组,而是返回一个新数组。
=> 不会影响原数组

	<script>
        let arr1 = ["a","b","c"];
        let arr2 = ["d","e","f"];
        let arr3 = ["xixi","haha","hehe"];
        let res = arr1.concat(arr2,arr3)
        console.log(res);
        console.log(arr1);
        console.log(arr2);
        console.log(arr3);
    </script>

结果如下:
在这里插入图片描述

三、排序算法

更多排序算法可以去掘金网站上看别人的文章:JS排序算法

1.冒泡排序(bubbleSort)

代码如下(示例):

	<script>
        // 冒泡排序(bubbleSort)  arr叫形参
        function bubbleSort(arr){
            
            for(var i=0; i<arr.length-1; i++){
                // console.log(arr[i]);

                for(var j=0; j<arr.length-1-i; j++){
                    // console.log(arr[j]);
                    if(arr[j] > arr[j+1]){
                        var temp = arr[j]
                        arr[j] = arr[j+1]
                        arr[j+1] = temp;
                    }
                }
            }

            return arr;
        }
        var arr = [2,10,3,2,69,76,12,49,1];
        // 函数的返回值就是排好序的数组
        console.log(bubbleSort(arr));; //arr是实参
    </script>

结果如下:
在这里插入图片描述

2.选择排序(selecttionSore)

代码如下(示例):

	<script>
        // 选择排序(selecttionSore)
        function selecttionSore(arr){

            for(var i=0; i<arr.length-1; i++){
                // console.log(arr[i]);
                let indexMin = i; // 暂且把第1个元素当成最小的元素
                for(var j=i; j<arr.length; j++){
                    if(arr[j] < arr[indexMin]){
                        indexMin = j;
                    }
                }
                var temp = arr[i]
                arr[i] = arr[indexMin];
                arr[indexMin] = temp;
            }

            return arr;

        }

        var arr = [2,10,3,2,69,76,12,49,1];
        console.log(selecttionSore(arr));
    </script>

结果如下:
在这里插入图片描述


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值