1. 实例演示不同的数组类型与访问方式
总共有三个数组类型:
1. 多维数组
2. 对象数组
3. 类数组
// 1. 多维数组
const arr1 = [
[1, '西瓜', 10],
[2, '苹果', 20],
[3, '黄桃', 30],
]
// arr1.forEach(function (item, key, arr1){
// console.log(item,key,arr1);
// })
// arr1.forEach(function (item){
// console.log(item);
// })
// 用箭头函数缩写一下
// 1. 去掉function, 括号后面增加=>,
// 2. 只有一个语句,可以删除大括号
arr1.forEach ( item => console.log(item))
console.log('-----------------------------');
// 2. 对象数组
// 成员是一个对象字面量,前后端分离开发中,服务器返回JSON
const fruits = [
{id:1, name: '西瓜', price:10},
{id:2, name: '苹果', price:20},
{id:3, name: '黄桃', price:30},
]
fruits.forEach ( item => console.log(item))
// 3. 类数组
// 不是class, 类:类似,像,类数组-> 类似一个数组,但不是数组
// 仍然是一个对象,用对象来模拟一个数组
// dom编程,浏览器中的对象
const likeArr = {
0:'admin',
1:'admin@qq.com',
2:'21343222',
length:3
}
// 类数组特征:
// 1. 由0开始的递增的正整数的索引/属性
// 2. 必须有'length',表示成员数量/数组长度
// console.log(likeArr);
// likeArr.forEach(item => console.log(item))
// 将类数组转为真正的数组
// console.log(Array.from(likeArr));
// [ 'admin', 'admin@qq.com', '21343222' ]
Array.from(likeArr).forEach(item => console.log(item))
// 4. 函数数组
// const events = [
// function(){
// return '准备发射'
// },
// function(){
// return '击中目标'
// },
// function(){
// return '敌人投降'
// },
// ]
// 箭头函数
const events = [
() => '准备发射',
() => '击中目标',
() => '敌人投降',
]
// ev 是一个函数,要调用ev()
// events.forEach(events => console.log(events()))
events.forEach(ev => console.log(ev()))
// 5. 对象方法
// 对象的方法中,其实就是属性,只不过他得值是一个匿名函数
const user = {
uname: '管志岗',
email: 'admin@qq.com',
getUser: function() {
// this 当前对象的引用, user
// 模板字符串要用反引号``,可以打出内容,''这个是打印的模板字面量${user.uname}
// return `${user.uname}: (${user.email})`
return `${this.uname}:(${this.email})`
},
}
console.log(user.getUser());
console.log(user.email,user.uname);
console.log('-------------------------');
//用数组调用
const user1 = [
'管志岗',
'admin@qq.com',
function() {
return `${this[0]}:(${this[1]})`
},
]
console.log(user1[2]());
console.log('---用数组调用---');
// 数组与对象的区别:
// 数组与对象并无本质区别,仅仅是语法上的不同
// 仅仅是成员声明方式和访问方式不同
// 显然对象的语义化更好
// 所以,可以将数组,看成对象的一个子集或特例
// 函数的本质
// 函数是js中,最重要的数据类型
// 函数可视为一个普通的值
// 函数可以充当返回值,参数等,凡是用到值的地方
// 如果没有return,则返回undefined
2. 实例演示分支的不同类型,注意else的本质
// todo 流程控制:分支
// 1. 顺序: 默认,与源码书写循序一直,不必再浪费时间
// 1. 单分支
// 2. 双分支(简化三元)
// 条件
if (true) {
}
// 1. 单分支
if (true) {
console.log("success");
}
console.log("----------------------");
// 2. 双分支: true/default
if (!true) {
console.log("success");
} else {
console.log("fall");
}
// else : 不一定是 false,只要不满足条件就执行这里
// else :默认分支
// 三元进行简化
let success = false
let result = success ? "成功" : "失败";
// if (status) {
// return "成功";
// } else {
// return "失败";
// }
console.log(result);
console.log("-------------------------");
// 3. 多分支
// if-else 嵌套 用switch来替换更好
grade = "C";
// if (grade == "A") {
// console.log("优秀");
// } else if (grade == "B") {
// console.log("良好");
// } else if (grade == "C") {
// console.log("合格");
// } else if (grade == "D") {
// console.log("补考");
// } else {
// console.log("非法输入");
// }
// grade = "d";
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("非法输入");
}
// 上面是单值,区间判断
let score = 75;
// switch 是true才能进入代码体
switch (true) {
case score >= 80 && score <= 100:
console.log("优秀");
break;
case score >= 60 && score <= 79:
console.log("及格");
break;
case score >= 40 && score <= 59:
console.log("差等");
break;
case score >= 0 && score <= 39:
console.log("补考");
break;
default:
console.log("非法输入");
}