JS-数组
方法:
Array.isArray(obj) : 判断对象是否是Array,是返回true,不是返回false
Array.from(obj) :将类数组对象转换成数组以及可遍历(iterable)转换成数组(生成新数组)
例如:var obj = { ‘0’: ‘a’, ‘1’: ‘b’, length : 2 } let array = Array.from(obj) // [a, b]
例如:NodeList对象,arguments对象Array.of(obj) : 将一组值转换成数组 例如:Array.of(1,2,3,4) // [1,2,3,4]
IE 浏览器不支持 Array.of(7) // [7]
Array(3) [, , ,]
兼容旧环境: if (!Array.of) {
Array.of = function() { return Array.prototype.slice.call(arguments);};
}
属性:
Array.prototype.length;数组长度
Prototype 返回对象类型的原型引用,可以添加新方法和属性以扩展所有Array对象;
Array.prototype.constructor 所有数组实例都继承了这个值,值为Array;
实例方法:
一、 转换方法
Array.join(‘,’) : 数组或类数组转换成字符串并返回字符串,对于undefind和null则返回空字符串,默认用,分割
二、首尾添加方法: 原数组改变
- Array.push(e1,e2) : 向数组尾部添加元素,返回数组的新长度;
- Array.prototype.push.apply(arr1, arr2) : 改变了arr1,将arr2合并到arr1;
- 操作对象
var obj = {
length: 0,
addElem: function addElem (elem) { [].push.call(this, elem);}
}
obj.addElem({}); console.log(obj.length); // → 2 - unshift**() 方法将一个或多个元素添加到数组的开头,并返回该数组的新长度。
三、 首尾删除方法: 原数组改变
- pop(): 从数组中删除最后一个元素,并返回该元素的值,数组为空返回undefined
- shift() 方法从数组中删除第一个元素,并返回该元素的值。数组为空返回undefined。
四、 重排序方法:改变原数组
- reverse() 方法将数组中元素的位置颠倒,并返回该数组
- sort() 方法对数组的元素进行排序,并返回数组。默认排序顺序是根据字符串Unicode码点
数字数组排序 : numbers.sort((a, b) => a - b);
五、操作方法:
- concat() 方法用于合并两个或多个数组。此方法不会更改现有数组,而是返回一个新数组。
- slice() 方法返回一个新的数组对象,原数组的浅拷贝。原始数组不会被改变。
如果数组内元素是对象:新数组的操作会影响原数组,
如果数组内元素是字符串,数字,布尔值的话,将不会影响原数组 - splice(start,number, replaceObj) 方法通过删除或替换现有元素来修改数组,并以数组形式返
回被修改的内容。此方法会改变原数组 - copyWithin() 方法浅复制数组的一部分到同一数组中的另一个位置,并返回改变后的数组,而不修改其大小,原数组改变
- fill(value, start,end) 方法用一个固定值填充一个数组中从起始索引到终止索引内的全部元素。不包括终止索引。
原数组改变 var arr = Array(3).fill({}) // [{}, {}, {}]; arr[0].hi = "hi"; // [{ hi: "hi" }, { hi: "hi" }, { hi: "hi" }]
六、位置方法
- indexOf(searchElemet, formIndex)方法返回在数组中可以找到一个给定元素的第一个索引,如果不存在,则返回-1
- lastIndexOf(searchElement, fromIndex) 方法返回指定元素在数组中的最后一个的索引,不存在返回 -1。从 fromIndex 处开始从数组的后面向前查找
- includes(valueToFind, fromIndex) 方法用来判断一个数组是否包含一个指定的值,根据情况,如果包含则返回 true,否则返回false
七、迭代方法
- every() 方法测试数组的所有元素是否都通过 通过返回true。
- some() 方法测试是否至少有一个元素通过,通过返回true。
- filter() 方法对数组中每一项都运行给定函数,返回该函数会返回true的所有项
- forEach() 对数组每一项都运行指定函数,没有返回值
- map() 对数组每一项都运行指定函数返回每次函数调用组成的数组
- find() 对数组所有成员执行指定的callback函数,找到第一个返回值为true的成员,并返回该成员,不符合条件返回undefined
- findIndex() 对数组所有成员执行指定的callback函数,找到第一个返回值为true的成员,并返回该成员的索引值,不符合条件的返回-1
- entries()对数组所有成员执行指定的callback函数,找到第一个返回值为true的成员,并返回该成员
- keys()方法返回一个包含数组中每个索引键的Array Iterator对象。
- values() 方法返回一个新的Array Iterator对象,该对象包含数组每个索引的值
八、归并方法
- reduce(函数,initialValue) 方法对数组中的每个元素执行一个由您提供的reducer函数(升序执行),将其结果汇总为单个返回值。
2.reduceRight() 方法接受一个函数作为累加器(accumulator)和数组的每个值(从右到左)将其减少为单个值。
九、扁平化方法:改变原数组
flat(num) 方法会按照一个可指定的深度递归遍历数组,并将所有元素与遍历到的子数组中元素合并为一个新数组返回
flat() 会移出数组空项
flat(Infinity) 可以扁平化任意维度的数组
兼容性:IE系列都不兼容flatMap() 方法首先使用映射函数映射每个元素,然后将结果压缩成一个新数组