JavaScript Array 数组对象-数据类型

创建

1Array.from({ length: 10 }) // 一个值是数组的长度,值为 empty(空
2new Array('1', '3') // 多个值与字面量一样
  • 利用 length 可以在末尾添加一项
1as[as.length] = 'red'
2
3as[99] = 'green' // 下标 99 添加,3 到 98 都是undefined
  • 转换方法
1const color = ['red', 'pink', 'green']
2color.toString() // red,pink,green
3color.valueOf() // (3) ["red", "pink", "green"] 返回数组对象的原始值

改变原数组(7 个方法)

1arr.push() // 末尾添加 一个/多个值, 返回新 length
2arr.pop() // 删除末尾的值,返回删除的值
3arr.unshift() // 前面添加 一个/多个值,返回新 length
4arr.shift() // 删除第一个值,返回删除的值
5arr.reverse() // 数组逆序,不是排序
6arr.sort((a, b) => a - b) // 升序,return 大于 0 的值,a b互换,小于 0 不换
7arr.splice(startIndex, length, '替换或插入的值 ?可选') // 起始下标,截取的长度,返回剪切的 [数组]

不改变原数组

1arr.concat('12', [2]) // 拼接数字或字符,返回新数组
2arr.slice(startIndex, endIndex) // 截取开始下标,结束下标 -1
3arr.join('-') // 返回以标识符连接字符串
4arr.toString() // 返回数组的字符串
5arr.indexOf('2') // 查找数值在数组的位置,有返回下标,没有返回 -1
6Array.isArray([]) // 传入的参数是否是数组,是返回 true

数组迭代

1arr.every((items, i, arr) => {
2  return 条件
3}) // 条件每一项为 true,全部符合条件才为 true
4arr.some((items, i, arr) => {
5  return 条件
6}) // 条件有一项为 true,则为 true
7arr.filter((items, i, arr) => {
8  return 条件
9}) // 返回符合条件的值,组成数组返回,没有符合返回空[]
10arr.forEach((items, i, arr) => {}) // 遍历
11arr.map((items, i, arr) => {
12  return val * 2
13}) // 遍历每一项,组成新数组返回
14
15// 归并
16arr.reduce((prev, cur, index, array) => {
17  // prev 为此方法 return 的值,初始为数组的第一项
18  // cur 为数组的下一项
19  // index 下标
20  // array 数组本身
21  return prev + cur
22})
23// arr.reduceRight 与 reduce 是一样的,从右边开始遍历
  • reduce 计算数组总和
1[1, 2, 3].reduce((prev, next) => {
2  return prev + next
3})
  • 利用 reduce 第二个参数,计算对象下某个值的总和
1const arr = [{ a: 1 }, { a: 2 }, { a: 3 }]
2arr.reduce((prev, next) => {
3  return prev + next.a
4}, 0)

如果没有 reduce 第二个参数,prev 初始值会是数组的第一项,设置初始值为 0 与下一项累加即可

类数组

1const obj = {
2  0: '12',
3  1: 21,
4  2: '122',
5  length: 1,
6  splice: Array.prototype.splice,
7}
8console.log(obj) // 控制台会输出数组形式的数据,js 中的数组也是重写了 Object 的原型

条件:

  1. 键为 0 1 2 3 的数字字符串(数组 0 1 2 也会被默认调用 tostring 以字符串存储为键)
  2. 有 length 属性
  3. 绑定 splice 为 Array 原型上的方法此时输出的 obj 为数组