Javascript中的数组

156 阅读2分钟

Javascript的数组

1.什么是数组

数组可以存储多个数据变量的一个容器,数组也可以是空数组

数组是按顺序保存,所以每个数据都有自己的编号

计算机中的编号从0开始,所以小明的编号为0,小刚编号为1,以此类推

在数组中,数据的编号也叫索引或下标

数组可以存储任意类型的数据

元素:数组中保存的每个数据都叫数组元素

下标:数组中数据的编号

长度:数组中数据的个数,通过数组的length属性获得

2.数组的语法书写

  <script>

    let 数组名 = [ 数据1,数据2,数据3 ];
    
    //数组里面可以存储字符串 数字 类型等
    let arr = ['小红','小白','小乐','小紫',123]
    
    
    </script>

3.数组的使用

    <script>

    let arr = ['小红','小白','小乐','小紫',123]
    

    //通过索引号(下标)调用数组中的数据 下标号是从0开始的
    arr[0] ; //小红
    arr[1] ; //小白
    arr[2] ;//小乐
    arr[3] ; //小紫
    arr[4] ;//123
	
	 console.log(arr[1]); //小白 字符串型
	 console.log(arr[4]) ; //123  数字型
    </script>

4.数组的遍历

用循环把数组中每个元素都访问到,一般会用for循环遍历

  
  
  <script>
	
	//语法
	
	/* 
	for ( let i= 0 ; i < arr.length ; i++) {
	arr[i]
	
	}
	
	
	*/




        //先声明一个数组
        let arr = [你好,他好,大家好,好迪,真好,哈哈哈]

        //遍历数组是指将数组的每个数据都打印出来
        for (let i = 0 ; i < arr.length ; i++ ) {
            document.write(`${arr[i]} <br>`)
        }

        //注意的是遍历数组时  注意到是 i 是从0 开始的  i 条件判断也是小于数组的长度
    </script>

5.数组的求和

求数组 [2,6,1,7, 4,9,11,23,45] 里面所有元素的和以及平均值


    <script>

        //数组
        let arr = [10,30,44,66,31,20];

        //求和变量
        let sum = 0;

        //平均值变量
        let aor = 0;
        //遍历每个数据并相加
        for ( let i = 0 ; i < arr.length;i++) {

            sum += arr[i]


        }
        //平均值变量
        aor = sum / arr.length

        document.write(`${sum} <br>`)
        document.write(`${aor}`)
    </script>

6.数组最大值

数组中元素顺序不是从大到小排列,有需求的话需要求数组最大值

   <script>

    //声明一个数组
    let arr = [20,15,3,64,81,22,42];
    //假定一个变量为数组的第一个值
    //比较数组的第一个值,如果设置为0的话,后续数组是负数的数据就比较麻烦
    let max = arr[0] ;  
    
    //遍历数组
    for (let i = 0 ; i < arr.length ; i++ ) {

        //假如遍历的数组大于max变量,那么最大值max=遍历的数值
        if ( arr[i] > max  ) {

            max = arr[i]
        } 
 
    }

    document.write(`${max}`)

   </script>

7.数组的最小值

    <script>
        
       //声明数组 

       let arr = [1,20,11,37,58,14,-2,30,0] 

       //假定一个变量为数组的第一个数
       let min = arr[0]
        //遍历比较最小值
       for (let i = 0; i < arr.length; i++) {
           
        if (arr[i] <  min ) {

            min = arr[i]
        }
           
       }

       document.write(`数组最小值为${min}`)

8.数组push() 和 unshift()添加新元素

1.push() 使用

数组名 .push() 方法将一个或多个元素添加到数组的末尾,并返回该数组的新长度

<script>


        //push增加的元素是添加在数组末尾
        let arr = ['平果','香蕉','橘子']

        let sum =  arr.push  ('火龙果' ,'柚子')

        console.log(sum); // 5
        document.write(`${arr}`) //输出五个元素

    </script>

2..unshift()使用

数组名.unshift(新增的内容) 方法将一个或多个元素添加到数组的开头,并返回该数组的新长度

	<script>
        //unshift 增加新的元素在数组前面

        let arr1 = [ 1,31,44,51,31,11]

        arr1.unshift(100,25,45)

        console.log(arr1); // 100 , 25 ,45,1,31,44,51,31,11

    </script>

9.数组筛选案例

将一个数组 [44, 2, 11, 54, 77, 0, 26, 47, 25, 7] 中大于等于 10 的元素选出来,放入新数组


    <script>


        //将arr数组大于10的值给空数组
        let arr =  [44, 2, 11, 54, 77, 0, 26, 47, 25, 7];

        //声明一个空数组
        let sum = [] ;

        for (let i = 0 ; i < arr.length ; i++ ) {

            if (arr[i] > 10  ) {
                //条件满足添加到空数组中,用到了数组的添加元素
                sum.push(arr[i])
            }

        }

        console.log(sum);
    </script>

10.数组pop()和shift()删除数组中的元素

1.pop()使用

数组. pop() 方法从数组中删除最后一个元素,并返回该元素的值

   <script>

        //pop删除 数组最后一个数据 并返回该元素值

        let arr = [ 12,11,30,45];
        //pop 括号里面不用书写  默认删除数组最后一个元素
        arr.pop()

        console.log(arr); //12  11 30

        
    </script>

2.shift()使用

数组. shift() 方法从数组中删除第一个元素,并返回该元素的值

  <script>


        //shift删除 数组第一个数据 并返回该元素的值

        let arr = [ 12,11,30,45]

        //删除数组中第一个数据,并返回元素的值.
        let num = arr.shift() //12
        console.log(num);  //12
        console.log(arr); // 11 30 45

    </script>

3.splice()使用

数组. splice() 方法 删除指定元素

1648644969550.png

1.start 起始位置:

指定修改的开始位置(从0计数,相当于下标)

2.deleteCount:

表示要移除的数组元素的个数

可选的。 如果省略则默认从指定的起始位置删除到最后

  <script>


        let arr = [1,3,4,87]

        //splice ('想要删除的元素的下标','想要删除的个数')

        //1.删除数组中的下标为1的元素
        //2.从下标1开始,想要删除几个
        arr.splice(1,2)

		//补充一下 splice 也可以指定添加元素
        //splice('想要删除的元素的下标','想要删除的个数','想要添加的元素')
        arr.splice(1,0,'我是新增加的元素')
        console.log(arr);
    </script>

11.用数组动态生成树状图

根据prompt输入框的值展示不同季度高度

1648645395119.png

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>

        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }

        ul {
            list-style: none;
            width: 1000px;
            height: 600px;
            margin: 100px auto;
            background-color: skyblue;
            display: flex;
            align-items: flex-end;
            justify-content: space-around;

        }

        li {


            width: 100px;
            background-color: pink;
            /* height: 100px; */
            position: relative;
            text-align: center;
            

        }

        span {
            position: absolute;
            left: 50%;
            transform: translateX(-50%);
            top: -30px;
        }


        div {
            width: 100%;
            position: absolute;
            left: 50%;
            transform: translateX(-50%);
            top: 100%;
            
        }

    </style>
</head>
<body>
  

    <script>


        //空数组接受用户数值
        let arr = []

        //每次for 循环拼接一次li标签,并且把ul标签开头先书写,根据字符串拼接特点在for循环结束后再拼接</ul>完成一个整体
        let liHtml = `<ul>`


        for (let i = 0 ; i < 4 ; i++) {
            //重复4次用户输入,并把每一次数值给到li标签的高度上
            let num = +prompt(`请输入第${i + 1}季度数值`)

            // arr[i] = num

            //用数组的添加方法也可以添加到空数组中
            arr.push(num) 
            //此处用到css的行内样式进行对不同li标签的赋不一样的值
            liHtml += `<li style= "height:${arr[i]}px"><span>${i + 1}</span><div>第${i + 1}季度</div></li>`
        }

        //for循环结束后需要完成双标签书写,所以在最后拼接
        liHtml += `</ul>`

        //最在页面输出整体布局 ,css已经先写好
        document.write(liHtml)

        console.log(arr);
    </script>
</body>
</html>