JavaScript数组


一、数组的创建

简介

  1. 数组元素可以是任意类型
  2. 数组从Array.prototype继承属性

1.数组字面量

数组字面量即

let arr = [];

注意:

//逗号之间没有元素的数组叫做稀疏数组,也会占一个位置,但是值为undefined
  let arr = ['a', , 'g',]
//数组最后一个元素后面可以有逗号,但是不会占数组长度,长度依然是3,而不是4

2.扩展操作符(…)

解释:在一个数组中包含另一个数组的所有元素,有点类似数组扩容

let arr = [11, 22, 33]

let arr1 = ['00', ...arr];

console.log(arr1[1]);//11
console.log(arr1[2]);//22
console.log(arr1[3]);//33
  1. 可以使用扩展操作符把任意字符串转换成单个字符的数组
  let str = '123456';

  let arr1 = str.split('')
  console.log(arr1);//(6) ['1', '2', '3', '4', '5', '6']

  let arr2 = [...str];
  console.log(arr2);//(6) ['1', '2', '3', '4', '5', '6']

3.Array()构造函数

注释:不怎么用,了解

1.new Arrauy()
//不传参就是空数组,传参则指定数组长度,但是长度可以通过添加元素的方式改变,并不像Java中一样严格
2.Array.of()
3.Array.from()

二、数组的读写

解释:没什么需要做笔记的,都不是很难

  1. 需要注意的是数组的长度并不是固定的,比如一个数组长度5,给数组添加元素时数组的length属性会自动改变
  2. 数组是一种特殊的对象,数组的索引其实相当于属性名,但属性名不一定是索引,只有当属性名是正整数是才是索引,会自动改变length长度,属性名为其他的时候length则不会改变,如下
  let ao = [44, 33];

  ao['name'] = 66

  console.log(ao['name']);//属性名是字符串,所有他不是索引,不会改变length长度

  console.log(ao.length);//2

四、数组的增删

  1. arr.push()在数组末尾添加一个新元素,arr.pop()删除数组末尾的元素并返回它
  2. arr.unshift()在数组第一个位置添加一个新元素,arr.shfit()则删除第一个位置的元素并返回它
  3. 直接设置length属性,大于或等于length的元素会删除
  4. 使用delete删除,这种方式类似于给元素赋值undefined,并不会改变数组长度

五、数组迭代的方式

  1. for of
  let arr = [1, , , 23, 4];

 
  for (const [key, value] of arr.entries()) {

    console.log(key, value);

  }
  1. 使用数组方法forEach
  2. 以及传统fori

六、数组方法

1.迭代方法

注意:所有的数组迭代方法都需要接收一个函数作为第一个参数,传入的函数有三个参数,第一个是数组元素,第二个为数组索引,第三个为数组本身

  1. arr.forEach(function())
  let arr = [1, , , 23, 4];
//forEach会对稀疏数组未定义的元素自动忽略,不遍历!也就是不执行回调函数
  arr.forEach(function (item, index, self) {})
  1. arr.map(function())也会和forEach一样数组未定义的元素不会执行传入的函数。遍历结束返回一个由返回值组成的数组。但是它返回的数组,其长度,稀疏度和原数组一样
  2. arr.filter(function()),这个方法的参数应该是一个断言函数(即参数的返回值为boolean),返回原数组的子数组,子数组的元素由断言函数决定,真则这个元素加入子数组,同样忽略数组未定义的元素

  let arr = [1, 2, 3, 5];
  
  let child = arr.filter((item, index) => index % 2 === 0)

  console.log(child);//[1, 3]
  1. arr.find(function())和arr.findIndex(function())返回元素和返回元素索引,参数为断言函数,其返回结果由断言函数的真值决定。只返回一次,断言函数为真,立刻停止迭代
  2. arr.some(function())和arr.every(function()),它们的返回值为boolean,参数为断言函数。arr.some()任何一次断言函数返回ture,整个表达式返回true,全部返回false,整个表达式返回false。arr.every()任何一次断言函数返回false,整个表达式发挥false,全部返回true,整个表达式返回true
  3. arr.reduce(function(),[初始值],value,index,self)这个函数用来对数组进行并归操作
并归解释:即把多个值合并成为一个值
第一个参数:需要是并归函数
第二个参数:初始值
  let arr = [1, 2, 3, 4, 5];

  let result = arr.reduce((x, y) => x + y, 10);//不仅局限于加法并归,其他也可以。

  console.log(result);//25   10的初始值加上1,2,3,4,5

2.其他API

  1. 截取数组:arr.slice(startIndex,endIndex),返回新数组,截取规则左闭右开
  2. 删除和添加数组元素:arr.splice(startIndex,length,item),返回被删除的元素组成的数组(会改变原数组),item是表示在startIndex插入的元素
  3. 数组填充:arr.fill(item,startIndex,endIndex)会修改调用它的数组,返回修改后的数组。把数组从startIndexendIndex(左闭右开)的元素替换成item
  4. arr.copyWithin()没懂
  5. arr.reduce(fun,[初始值])对数组进行并归操作(并归:多个值合并成一个值),第一个参数为并归函数,第二个参数为初始值。
  let arr = [1, 2, 3, 4, 5];
  let result = arr.reduce((x, y) => x + y, 10);
  console.log(result);//结果为25    10的初始值加上1,2,3,4,5
  //并归函数可以+ - * / .......等等;

3.数组索引和排序方法

  1. arr.indexOf(),arr.lastIndexOf(),搜索指定的值返回索引,没找到返回-1,区别是从前往后找,和从后往前找
  2. arr.includes()返回boolean,测试数组是否包含某个元素
  3. arr.sort()排序数组,不传参则按照字母顺序排序。如果要自定义排序规则,需要传入一个函数。
  4. arr.reverse()反转数组
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值