一.不同的数组类型与访问方式
1.输出结果
2.代码部分
// ! 数组类型
// * 1.一维数组
// 声明: 字面量, [...]
// 索引: [0,1,2,3,..], 从0开始递增的"有序"正整数
// 值: 可以是任何类型
// 索引+值: 数组成员 或 数组元素
const arr = ['樱桃', '苹果', '栗子']
//逐个:索引用 array,单个索引用arr[...]
console.log('array: ',arr[0], arr[1], arr[2])
console.log('------------------')
// * 2.扩展数组
// forEach: 用于迭代遍历数组或对象
// foreach(callback): 参数是一个函数,当函数当参数时,叫"回调"
// arr.forEach(function(item,key,arr){}), 只有第一个参数item是必选
// ? (1) 多维数组
// 成员仍然是一个数组
// item是项目,key是键,arr是数组
const arr1 = [
[1, '平板', 100],
[2, '电脑', 200],
[3, '手机', 400],
]
// 箭头函数
arr1.forEach(item => console.log(item))
console.log('------------------')
// ? (2) 对象数组
// 成员是一个对象字面量, 前后端分离开发中, 服务器返回JSON
const arr2 = [
{id: 1, name: '平板', price: 1000},
{id: 2, name: '电脑', price: 2000},
{id: 3, name: '手机', price: 3000},
]
// 箭头函数
arr2.forEach(item => console.log(item))
console.log('------------------')
// ? (3) 类数组
// 不是 class, 类: 类似,像, 类数组->类似一个数组,但不是数组
// 仍然是一个对象, 用对象来模拟一个数组
// dom编程, 浏览器中的对象
// ** 由0开始的递增的正整数的索引/属性
// ** 必须要有 `length`,表示成员数量/数组长度
const arr3 = {
0: 'admin',
1: '12345677@163.com',
2: '18356789765',
length: 3,
}
// 需要讲类数组转化为真正的数组,否则无法暑输出
console.log(Array.from(arr3))
// 箭头函数
Array.from(arr3).forEach(item => console.log(item))
console.log('------------------')
// ? (4) 函数数组
// 数组成员是函数
const arr4 = [() => '成绩及格', () => '成绩良好', () => '成绩优秀']
// arr4.forEach(arr4 => console.log(arr4, typeof arr4))
// 因为arr4是一个删除,要调用 arr4()
arr4.forEach(arr4 => console.log(arr4()))
二.分支的不同类型(注意else)
1.输出结果
2.代码部分
// ! 分支
// 分支:有条件的执行某一段代码
// * 单分支
if (true) {
console.log('success');
}
console.log('-------------')
// * 双分支(简化:三元):true / default
if (!true) {
console.log('success');
} else {
console.log('fail');
}
// 三元简化
let status = false
let result = status ? '成功' : '失败'
console.log(result)
console.log('-------------')
// * 多分支(简化:switch)
// ? switch
grade = 'C'
switch (grade) {
case 'A':
console.log('优秀')
break
// 返回的意思
case 'B':
console.log('良好')
break
case 'C':
console.log('合格')
break
case 'D':
console.log('补考')
break
default:
console.log('非法输入')
}
console.log('-------------')
// 上面是单值,如果是区间判断
let score = 83
// switch(true) 才能进入到代码体
switch (true) {
case score >= 80 && score <= 100:
console.log('优秀')
break
case score >= 70 && score < 80:
console.log('良好')
break
case score >= 60 && score < 70:
console.log('合格')
break
case score > 0 && score < 60:
console.log('补考')
break
default:
console.log('非法输入')
}