数组语法总结

什么是数组?

数组 : 是一种复杂数据类型
数组作用 : 可以在变量中 ‘存储多个数据’
数组内存原理 : 数组内存由三个部分组成(数组三要素)
元素: 数组中的数据
下标: 元素的位置
长度: 元素的数量

1.数组语法

1.1数组声明

数组声明: let 数组名 = [元素1,元素2,元素3,…]

let arr = [23, 56, 78, 89, 12]

1.2数组取值

数组取值 : 数组名[下标]

console.log(arr[2])

查询元素下标
indexOf()

let arr=[10,20,30,40]
log(arr.indexOf('10'))//0

1.3数组长度

数组长度 : 数组名.length

console.log(arr.length)

在这里插入图片描述

1.4数组遍历

数组遍历: 依次读取数组每一个元素
固定格式的for循环:

for(let i = 0;i < arr.length ;i++){
      arr[i]
 }
let arr = [3, 6, 7, 9, 3, 5]
for (i = 0; i < arr.length; i++) {
    console.log(arr[i])
}

2.数组操作

2.1查询

数组取值(查) : 数组名[下标]

let arr = [2, 5, 6, 3, 7, 9]
console.log(arr[2])
console.log(arr[6])

在这里插入图片描述
(1)如果下标存在,则是获取元素值
(2)如果下标不存在,则是获取undefined

2.2修改

数组赋值(改): 数组名[下标] = 值

let arr = [2, 5, 6, 3, 7, 9]

arr[2] = 4
console.log(arr)

arr[6] = 10
console.log(arr)

arr[10] = 8
console.log(arr)

在这里插入图片描述
(1)如果下标存在,则是修改元素值
(2)如果下标不存在,则是新增元素

2.3新增

let arr = [10, 20, 30, 40]
arr.push(50, 60)
console.log(arr)
arr.unshift(1, 2)
console.log(arr)

在这里插入图片描述
(1)数组名.push(元素):一个或多个元素,添加到数组末尾
(2)数组名.unshift(元素):一个或多个元素,添加到数组开头

2.4删除

let arr = [10, 20, 30, 40, 50]
arr.pop() //删除最后一个元素
arr.shift() //删除开头一个元素

在这里插入图片描述
(1)数组名.pop() :删除数组最后一个元素
(2)数组名.shift() :删除数组第一个元素
()小括号里不写值

(3)数组名.splice(下标,数量) :从指定下标开始删除指定数量的元素

let arr = [10, 20, 30, 40, 50]
arr.splice(2, 1) //从下标2的元素开始删除一个


let arr1 = [10, 20, 30, 40, 50]
arr1.splice(2, 1, 60, 70)
console.log(arr1);

在这里插入图片描述
arr.splice(下标, 删除的个数)
arr1.splice(下标, 删除的个数, 在删除位置新增的数, 在删除位置新增的数)

3.数组应用

3.1数组求和

思路:
(1)声明一个变量存储结果
(2)遍历数组中每一个元素
(3)累加

//求一组数据的总和
 let arr = [11, 22, 33, 44, 55, 66]
let sum = 0
for (let i = 0; i < arr.length; i++) {
  sum += arr[i]
}
console.log(sum)
//求一组数据偶数的总和
let arr1 = [11, 22, 33, 44, 55, 66]
let sum1 = 0
for (let i = 0; i < arr1.length; i++) {
if (arr[i] % 2 == 0) {
  sum1 += arr1[i]
 }
}
console.log(sum1)

3.2数组求最大值/最小值

思路:
(1)声明变量默认为第一个元素
(2)遍历数组
(3)依次比较大小,然后赋值

//求最大值
let arr = [11, 88, 22, 66, 33, 44, 55]
let max = arr[0]
for (let i = 1; i < arr.length; i++) {
   if (arr[i] > max) {
     max = arr[i]
   }
}
console.log(max)
//求最小值
let arr1 = [11, 88, 22, 66, 33, 44, 55]
let min = arr[0]
for (let i = 1; i < arr.length; i++) {
   if (arr[i] < min) {
      min = arr[i]
   }
}
console.log(min)

3.3筛选数组

思路:
(1)声明新数组
(2)变量数组,找出符号条件的元素
(3)将符号条件的元素放入新数组中

 //需求:将数组 [2, 0, 6, 1, 77, 0, 52, 0, 25, 7] 中大于等于 10 的元素选出来,放入新数组
let arr = [2, 0, 6, 1, 77, 0, 52, 0, 25, 7]
let newArr = []
for (let i = 0; i < arr.length; i++) {
    if (arr[i] > 10) {
      newArr.push(arr[i])
    }
}
console.log(newArr)

实际开发场景:去除数组中指定的元素,生成新数组
(1)微信账单: 收入 + 支出。 需求是只看收入(支出类型去除)
(2)商品列表 : 京东自营(把非自营商品去除)

3.4数组去0

//需求:将数组 [2, 0, 6, 1, 77, 0, 52, 0, 25, 7] 中的 0 去掉后,形成一个不包含 0 的新数组
let arr = [2, 0, 6, 1, 77, 0, 52, 0, 25, 7]
let newArr = []
for (let i = 0; i < arr.length; i++) {
   if (arr[i] != 0) {
     newArr.push(arr[i])
   }
}
console.log(newArr)

3.5根据数组生成柱状图

/*需求 
(1)让用户输入四个季度数据,存入数组中
(2)根据数组中的数据,生成页面柱状图
*/
<!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>
    .box {
      display: flex;
      justify-content: space-around;
      align-items: flex-end;
      width: 800px;
      height: 500px;
      margin: 50px auto;
      border-bottom: 1px solid #000;
      border-left: 1px solid #000;
    }

    .box div {
      display: flex;
      flex-direction: column;
      justify-content: space-between;
      flex-wrap: nowrap;
      align-items: center;
      width: 50px;
      height: 50px;
      background-color: skyblue;
    }

    .box div span {
      margin-top: -20px;
    }

    .box div h3 {
      width: 80px;
      margin-bottom: -25px;
    }
  </style>
</head>

<body>



  <script>
    let arr = []
    for (let i = 1; i <= 4; i++) {
      let num = +prompt(`请输入第${i}个季度的数据`)
      arr.push(num)
    }
    console.log(arr)

    document.write('<div class="box">')
    for (let i = 0; i < arr.length; i++) {
      document.write(`<div style="height:${arr[i]}px">
         <span>${arr[i]}</span>
         <h3>第${i+1}季度</h3>
         </div>`)
    }
    document.write('</div>')
  </script>
</body>

</html>

在这里插入图片描述

3.6根据数组生成手风琴盒子

<!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>
        .box {
            overflow: hidden;
            display: flex;
            width: 1120px;
            height: 260px;
            margin: 50px auto;
        }

        .box div {
            width: 120px;
            border: 1px solid #fff;
            transition: all .5s;
        }

        .box div:hover {
            width: 400px;
        }
    </style>
</head>

<body>
    <script>
        let arr = [
            './images/1.jpg',
            './images/2.jpg',
            './images/3.jpg',
            './images/4.jpg',
            './images/5.jpg',
            './images/6.jpg',
            './images/7.jpg',
        ]

        document.write('<div class="box">')
        for (let i = 0; i < arr.length; i++) {
            document.write(`<div><img src="${arr[i]}" alt=""></div>`)
        }
        document.write('</div>')
    </script>
</body>

</html>

在这里插入图片描述

3.7案例

让用户输入五个有效年龄(0-100之间),放入数组中,必须输入五个``有效年龄年龄,如果是无效年龄,则不能放入数组中

思路一:
循环三要素:
循环次数:有效次数5次(for)
循环条件:i<=5
循环体:输入年龄

let arr = []
for (let i = 1; i <= 5; i++) {
     let age = +prompt(`请输入第${i}个有效年龄`)
     if (age >= 0 && age <= 100) {
         arr.push(age)
     } else {
            i--
            }
}

思路二:
循环三要素:
循环次数:没有次数(while)
循环条件:数组长度<5
循环体:如果是0~100间加入数组

let arr = []
while (arr.length < 5) {
   let age = +prompt(`请输入第${arr.length+1}个有效年龄`)
   if (age >= 0 && age <= 100) {
     arr.push(age)
   }
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值