博客列表 >不同的数组和分支的类型与访问方式

不同的数组和分支的类型与访问方式

Stonegarlic
Stonegarlic原创
2022年11月05日 14:26:42529浏览

1102作业

1.数组

  • 声明: 字面量, […]
  • 索引: [0,1,2,3,..], 从0开始递增的”有序”正整数
  • 值: 可以是任何类型
  • 索引+值: 数组成员 或 数组元素

    1.1数组

    1. const arr = ['苹果', 5, true]
    2. console.log('array: ', arr[0], arr[1], arr[2])
    3. // 判断: 不用typeof, 用 Array.isArray(a)
    4. console.log(typeof arr,Array.isArray(a))

    1.2对象

  • 声明: 字面量 { … }
  • 属性: 语义化字符串, 功能与数组索引类似,但”无序”
  • 值: 可以是任何类型
  • 属性+值: 对象成员 或 对象元素
  • 与数组对比, 对象更像是一个”关联数组”
    1. const item = {
    2. name: '手机',
    3. price: 5000,
    4. 'in stock': true,
    5. }
    6. console.log('object: ', item['name'], item['price'], item['in stock'])
    7. // 点语法: 属性名是合法的标识符
    8. // 如果属性名是一个非法的标识符, 必须用引号包装,访问时必须使用数组的语法,不能用点
    9. console.log('object: ', item.name, item.price, item['in stock'])
    10. console.log(typeof item)

    1.3多维数组

  • forEach: 用于迭代遍历数组或对象
  • foreach(callback): 参数是一个函数,当函数当参数时,叫”回调”
  • arr.forEach(function(item,key,arr){}), 只有第一个参数item是必选
    1. const arr1 = [
    2. [1, '西瓜', 10],
    3. [2, '苹果', 20],
    4. [3, '黄桃', 30],
    5. ]
    6. // arr1.forEach(function (item, key, arr1) {
    7. // console.log(item, key, arr1)
    8. // })
    9. // arr1.forEach(function (item) {
    10. // console.log(item)
    11. // })
    12. // 箭头函数
    13. arr1.forEach(item => console.log(item))

    2. 对象数组

    1. // 成员是一个对象字面量, 前后端分离开发中, 服务器返回JSON
    2. const fruits = [
    3. { id: 1, name: '西瓜', price: 10 },
    4. { id: 2, name: '苹果', price: 20 },
    5. { id: 3, name: '黄桃', price: 30 },
    6. ]
    7. fruits.forEach(item => console.log(item))

    3. 类数组

  1. // 不是 class, 类: 类似,像, 类数组->类似一个数组,但不是数组
  2. // 仍然是一个对象, 用对象来模拟一个数组
  3. // dom编程, 浏览器中的对象
  4. const likeArr = {
  5. 0: 'admin',
  6. 1: 'admin@qq.com',
  7. 2: '498668472',
  8. length: 3,
  9. }
  10. /**
  11. * ? 类数组特征
  12. * * 1. 由0开始的递增的正整数的索引/属性
  13. * * 2. 必须要有 `length`,表示成员数量/数组长度
  14. */
  15. // likeArr.forEach(item => console.log(item))
  16. // 将类数组转为真正的数组
  17. console.log(Array.from(likeArr))
  18. // [('admin', 'admin@qq.com', '498668472')]
  19. // Array.form: 类数组->真数组
  20. Array.from(likeArr).forEach(item => console.log(item))

4. 函数数组

  • 数组成员是函数
  1. const events = [
  2. function () {
  3. return '准备发射'
  4. },
  5. function () {
  6. return '击中目标'
  7. },
  8. function () {
  9. return '敌人投降'
  10. },
  11. ]
  12. // 箭头函数简化
  13. const events = [() => '准备发射', () => '击中目标', () => '敌人投降']
  14. events.forEach(ev => console.log(ev, typeof ev))
  15. // ev 是一个函数, 要调用 ev()
  16. events.forEach(ev => console.log(ev()))

5. 对象方法

  1. / 对象的方法, 其实就是属性,只不过它的值是一个匿名函数
  2. const user = {
  3. uname: '朱老师',
  4. email: '498668472@qq.com',
  5. getUser: function () {
  6. // this: 当前对象的引用, user
  7. return `${this.uname}: ( ${this.email} )`
  8. },
  9. }
  10. console.log(user.getUser())
  11. console.log('-----------------------')
  12. // 改成数组
  13. const userArr = [
  14. '朱老师',
  15. '498668472@qq.com',
  16. function () {
  17. return `${this[0]}: ( ${this[1]} )`
  18. },
  19. ]
  20. console.log(userArr[2]())
  • 数组与对象的区别:
  • 数组与对象并无本质区别,仅仅是语法上的不同
  • 仅仅是成员声明方式和访问方式不同
  • 显然对象的语义化更好
  • 所以, 可以将数组,看成对象的一个子集或特例

  • 函数的本质
  • 函数是JS中,最重要的数据类型
  • 函数可视为一个普通的值
  • 函数可以充当返回值,参数等,凡是用到值的地方
  • 如果没有return,则返回 undefined

    效果

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议