数组常见方法总结

这篇博客总结了JavaScript数组的各种操作,包括创建方式、判断数组的方法、添加和删除元素、修改数组、遍历方法(如forEach、map、filter等)、查找元素、合并数组、排序、翻转、填充和复制等。此外,还区分了会改变原数组和不会改变原数组的操作方法。
摘要由CSDN通过智能技术生成

数组

数组的特点

  • 默认值是 undefined,当访问数组中不存在的索引时,会返回 undefined,而不是报错
  • 数组的大小不固定,会自动的进行扩容
  • 可以存储不同类型的数据
  • 分配给数组的存储空间是不连续的,哈希映射或链表传送门
  • 数组也是一个特殊的对象,对象有的方法数组也具有

数组的创建

字面量

var arr = [1, 2, 3, 4];

构造器构造

var arr1 = new Array(1, 2, 3, 4); // [1, 2, 3, 4]
var arr2 = new Array(10); //  [empty × 10]
var arr3 = Array(1, 2, 3, 4); // [1, 2, 3, 4]

Array.of

var arr5 = Array.of(1, 2, 3, 4);  // [1, 2, 3, 4]
var arr5 = Array.of(4);  // [4]

Array.form(arr, mapFn, this)

可以将类数组装换为真正的数组

var obj1 = {
    0: "a",
    1: "b",
    2: "c",
    length: 3
};

var arr1 = Array.from(obj1); //["a", "b", "c"]
var arr2 = Array.from(obj1, x => x + x); // ["aa", "bb", "cc"]

注意

  • 构造器构造的数组,如果构造函数的参数传递的是一个数字,那么这个数字代表的是数组的长度,数组当中的每一项默认为 empty
  • Array.of 是返回所有参数值组成的数组,如果没有参数就返回一个空数组。解决构造器构造中因参数不同,导致的行为有差异的问题

如何判断数组

  • Array.isArray():用来判断某个变量是否是一个数组对象,若是返回 true,否则返回 false

数组的常见方法

为数组添加元素
  • push():向数组的末尾添加一个或多个元素,并返回该数组的新长度
  • unshift():向数组的开头添加一个或多个元素,并返回该数组的新长度
  • splice(index, 0, el1, eln):向数组指定位置添加元素
  • 直接赋值:arr[arr.length] = data
从数组中删除指定的元素
  • pop():删除数组的最后一个元素,并返回这个被删除的元素
  • shift():删除数组的第一个元素,并返回这个被删除的元素
  • splice(index, n):n 为删除数组的个数,若不写,则默认删除到末尾,并返回被删除的元素
  • 修改数组的长度:arr.length = n
修改数组的方法
  • splice(index, n, el1, eln):从index开始,修改n个,并分别修改为 el
  • 直接赋值:arr[index] = data
遍历数组的方法
es5
  • forEach:为数组中的每个元素执行一次回调函数,返回值为 undefined
  • map:返回一个新数组,新数组是该数组中每个元素调用一次提供的函数后的返回值
  • filter:将所有在过滤函数中返回 true 的数组元素放进一个新数组中并返回
  • every:如果数组中的每个元素都满足测试函数,则返回 true,否则返回 false
  • some:如果数组中至少一个元素满足测试函数,则返回 true,否则返回 false
  • reduce:从左到右为每个数组元素执行一次回调函数,并把上次回调函数的返回值放在一个暂存器中传给下次回调函数,并返回最后一次回调函数的返回值。如果没有初始值得话,会将数组的第一个参数作为初始值
  • reduceRight(callBackFn(accumclator, currentValue, index, arr), initialValue):从右向左
var arr = [1, 2, 5];

var arr1 = arr.splice(2, 0, 3, 4);
console.log(arr); // [1, 2, 3, 4, 5]

var arr2 = arr.splice(2, 2, 'c', 'd');
console.log(arr); //[1, 2, "c", "d", 5]

var arr1 = [[0, 1], [2, 3], [3, 4]];

var arr2 = arr1.reduce((a, b) => {
  return [...a, ...b];
}, []);
console.log(arr2); //[0, 1, 2, 3, 3, 4]
var sum = arr2.reduce((acc, current) => {
  return acc + current;
}, 0);
console.log(sum); //13
es6
  • find:找到你第一个满足测试函数的元素并返回那个元素的值,若找不到,则返回 undefined
  • findIndex:找到第一个满足测试函数并返回那个元素的索引,若找不到,则返回 -1
  • keys:返回一个数组迭代器对象,该迭代器会包含所有数组元素的键
  • values:值
  • entries:键和值

数组其它方法

数组中查找数据的方法

  • indexOf:返回数组中第一个与指定值相等的元素的索引,如果找不到这样的元素,则返回 -1
  • lastIndexOf:从右向左

合并数组

  • concat
  • 拓展运算符 …

将数组拼接为字符串

  • join([separator]):使用指定分割符将数组拼接为字符串,默认分隔符是逗号
  • toString():返回一个由所有数组元素组合而成的字符串。遮蔽了原型链上的 Object.prototype.toString()方法
  • toLocalString

数组排序

  • sort(compFn(a, b)):如果 compFn(a, b) < 0,那么 a 会排列在 b 之前;如果 compFn(a, b) = = 0,那么 不变;如果 compFn(a, b) > 0,那么 b 会排列在 a 之前

默认比较的是每个字符的 Unicode

var arr = [2, 1, 11, 4, 52, 17];
arr.sort((a, b) => a - b);
console.log(arr); // [1, 2, 4, 11, 17, 52]

数组翻转

  • reverse

判断数组中是否包含某个数据

  • includes:判断当前数组是否包含某指定的值,如果是返回 true,否则返回 false
  • find
  • indexOf

截取数组中部分连续数据

  • slice(begin, end):返回一个新的数组,浅拷贝

填充数组

  • fill

复制数组中某些连续的数据到指定位置

  • copyWidth

改变原数组的方法有

  • push
  • pop
  • shift
  • unshift
  • splice
  • sort
  • reverse
  • fill
  • copeWidth

不改变原数组的方法有

  • slice
  • join
  • concat
  • indexOf
  • lastIndexOf
  • includes
  • toString
  • toLocalString
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值