ES5-15 数组基础、数组方法、数组排序

本文详细介绍了JavaScript中创建数组的几种方式,包括字面量、构造函数和不使用new的方式。强调了数组作为对象的特性,以及稀疏数组的概念。讲解了数组的方法,如push、unshift、pop、shift、reverse、splice、sort等,并提供了自定义实现这些方法的示例。还讨论了如何根据字节数进行数组排序。最后,给出了两个使用splice重写unshift方法的实现示例。
摘要由CSDN通过智能技术生成

创建数组

  1. 字面量 var arr = []
  2. 构造函数 var arr = new Array()
  3. 不使用new var arr = Array()
    所有数组都继承于Array.prototype,能使用其中的数组方法
    数组是另一种形式的对象,访问机制相同
  4. 数组的empty项打印出来是undefined,empty不是值只是一个空的标识
  • 稀松数组
    最后一个,后若是空值,则不计入(最后一个逗号忽略)
    并非每位都有值
    在这里插入图片描述
  • 使用构造函数,不能有空值,否则报语法错误
  • new Array()的参数用于设置数组长度,或设置数组
    在这里插入图片描述
  • 数组是对象的另一种形式
    在这里插入图片描述

数组方法

  • 数组方法 - 继承了数组原型上的方法

push、unshift

  • push、unshift(返回值:执行了方法以后数组长度)

  • push在最后加,unshift在头部加

  • 可以添加多个
    在这里插入图片描述
    在这里插入图片描述

  • 手写push方法

Array.prototype.myPush = function () {
    let arr = this // 谁调用,this就指向谁
    for (var i = 0; i < arguments.length; i++) {
        arr[arr.length] = arguments[i]
        arr.length++ // 长度自增
    }
    return arr.length
}
var arr = [1, 2, 3]
console.log(arr.myPush(4, 5, 6)) // 6
console.log(arr) // 123456

pop、shift

  • 剪切、返回剪切掉的那个值
  • 无参数
  • pop剪切末位、shift剪切首位

reverse

  • 倒序

splice

  • arr.splice(开始项的下标,删除长度,删除以后在当前指针开始添加数据)

  • 第三个参数可以传多个值(添加多个值)

  • 用于添加时,理解为在哪个下标添加

  • 返回值空数组
    在这里插入图片描述

  • 可传负数,最后一位的index认为是-1,在index前添加
    在这里插入图片描述
    在这里插入图片描述

  • 用splice重写unshift

  • sort return 0

sort

  • 返回排序后的数组
  • sort是按照ASCII码排列的(未传参时)
    在这里插入图片描述
  • 传fn,定义排序方式
  • 升序排return负值(a-b),降序排return正值(b-a)
    在这里插入图片描述
  • 随机排序
    在这里插入图片描述
  • 对象
    在这里插入图片描述
    在这里插入图片描述

练习

  1. 用splice方法重写原型上的unshift方法
Array.prototype.myUnshift = function () {
    this.splice(0, 0, ...arguments)
    return this.length
}
var arr = [3, 4, 5]
console.log(arr.myUnshift(1, 2)) // 5
console.log(arr) // 1 2 3 4 5

在这里插入图片描述

or

Array.prototype.myUnshift = function () {
    var fontArr = Array.prototype.slice.call(arguments)
    return fontArr.concat(this)
}
var arr = [3, 4, 5]
console.log(arr.myUnshift(1, 2)) // 5
  1. 按照字节数排列数组[]
var arr = ['夜阑人静初', '响起了', '悠悠的Saxophone']
function computeByte(str) {
    var byte = str.length
    for (var i = 0; i < str.length; i++) {
        let code = str.charCodeAt(i)
        byte += code > 255 ? 1 : 0
    }
    return byte
}
console.log(arr.sort(function (a, b) {
    return computeByte(a) - computeByte(b)
}))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值