数组方法

197 阅读2分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

创建数组的几种方式

我们先说说有几种方式创建数组:

  1. 数组对象字面量
  2. new Array()
    只有一个参数的时候,其作为数组的长度。 这个是个坑点。
  3. Array.from
  4. Array.of 与new Array, Array的区别在于,只有一个参数时,是作为元素,而不是作为长度。
  5. Array.prototype.slice, Array.prototype.concat等等, 其他方法创建新数组
// 字面量
var arr = [...[1,2,3]]; // 1,2,3

// new Array
var arr2 = new Array(1,2,3); // 1,2,3,4
// new Array
var arr3 = new Array(1) // [empty];
// Array.of
var arr33 = Array.of(1)  // [1]

// Array.from
var arr4 = Array.from([1,2,3]); // [1,2,3]
// Array.from
var arr4 = Array.from({length:3}, function(value,index){
    return index + 1
}); // [1,2,3]

// Array.prototype.slice
Array.prototype.slice.call(document.querySelectorAll("div")) // [div, div, div....]

// Array.prototype.concat
Array.prototype.concat.call([], [1,2,3]) // [1,2,3]

查找类

Array.prototype.find

查找满足条件的值。

Array.prototype.findIndex

查找满足条件的值得索引。

Array.prototype.includes

ES6+语法, 是否包含某个值。 判断是否为某个选项值得时候,非常有用。

比如下面检查是不是一个有效的属性键。

const KEY_LIST = ["number","string","symbol"];
if(KEY_LIST.includes(key)){
    console.log("有效的属性key")
}

Array.prototype.some

是否至少有1个元素满足条件。

Array.prototype.every

是否所有元素满足条件。

Array.prototype.indexOf

找到一个给定元素的第一个索引值。

Array.prototype.lastIndexOf

找到一个给定元素的最后一个索引值。

Array.prototype.at

通过索引值获取元素,支持负数。

Array.prototype.filter

满足某些条件的元素集合。

增删改

Array.prototype.slice

截取一部分元素生成新数组。 也常用语把类数组转换成数组。

Array.prototype.splice

删除或替换现有元素或者原地添加新的元素来修改数组,并以数组形式返回被修改的内容。 这个方法不改变元素组,常用来删除数组。

var arr = [0];
arr.splice(0,1, 2,3); // [0] 删除的元素
console.log(arr); // [2,3]

Array.prototype.concat

数组拼接。

Array.prototype.copyWithin

复制数组的一部分到同一数组中的另一个位置。

var array1 = [1,2,3];
console.log(array1.copyWithin(0, 1, 3)); // [2,3,3]

Array.prototype.fill

填充数组。

Array.prototype.pop

删除最后一个元素,并返回。

Array.prototype.push

将一个或多个元素添加到数组的末尾

Array.prototype.shift

删除第一个元素,并返回

Array.prototype.unshift

将一个或多个元素添加到数组的开头

Array.prototype.reverse

反转数据

Array.prototype.sort

数排序

遍历

Array.prototype.forEach

遍历

Array.prototype.map

映射

Array.prototype.reduce

映射成新数组

Array.prototype.reduceRight

从右到左,映射成新数组

其他

Array.prototype.values

Array Iterator

Array.prototype.keys

Array Iterator

Array.prototype.entries

键/值对Array Iterator

Array.prototype.flat

转一维数组

Array.prototype.flatMap

映射函数映射每个元素,然后将结果压缩成一个新数组

Array.prototype.join

拼接返回字符串。

小结

今天你收获了吗?