Array.isArray()
判断是不是数组的方法
|
|
toString()
把数组返回字符串
|
|
push() & unshift()
语法:arr.push(element1, …, elementN) // arr.unshift(element1,……elementN)
参数:被添加到数组尾部的元素
返回值:新的length长度!(该方法会改变原数组)
|
|
pop() & shift()
语法:arr.pop() 不接受参数 (改变原数组的长度length)
返回值:数组中被移除的值 (空数组返回undefined)
|
|
|
|
join()
join() 方法将数组(或一个类数组对象)的所有元素连接到一个字符串中。
语法:str = arr.join() ; str = arr.join(“”) ; str = arr.join(separator)
返回值:字符串 (不会改变原数组!)
|
|
concat()
concat() 方法用于合并两个或多个数组。它将新数组的成员,添加到原数组的尾部,然后返回一个新数组,原数组不变。
语法:var new_array = old_array.concat(value1[, value2[, …[, valueN]]])
参数:需要与原数组合并的数组或非数组值(可以是对象)。
返回值:新数组(原数组不变)
|
|
concat()
方法也可以用于将对象合并为数组,但是必须借助call
方法。12345678[].concat.call({a: 1}, {b: 2}) 这里是空数组,用call的时候不加()!!!// [{ a: 1 }, { b: 2 }][].concat.call({a: 1}, [2])// [{a: 1}, 2][2].concat({a: 1}) 这里不需要call// [2, {a: 1}]
|
|
reverse()
reverse
方法用于颠倒数组中元素的顺序,返回改变后的数组。注意,该方法将改变原数组。
返回值:颠倒后的数组 (原来数组会改变)
|
|
slice()
slice()
方法用于提取原数组的一部分,返回一个新数组,原数组不变。
语法:arr.slice() // arr.slice(begin) // arr.slice(begin,end)
参数:index,可以是负数,数组最后一个数值为-1开始
返回值:提取出来的新数组 ,原数组不变
注:它的第一个参数为起始位置(从0开始),第二个参数为终止位置(但该位置的元素本身不包括在内)。如果省略第二个参数,则一直返回到原数组的最后一个成员。
|
|
splice()
splice()方法通过删除现有元素和/或添加新元素来更改一个数组的内容。(原来数组会改变)
语法:array.splice(start) // array.splice(start, deleteCount) // array.splice(start, deleteCount, item1, item2, …)
参数:start,deleteCount,item(添加的内容,添加到start前面 )
返回值:由被删除的元素组成的一个数组。如果只删除了一个元素,则返回只包含一个元素的数组。如果没有删除元素,则返回空数组。
|
|
|
|
sort()
sort()`方法在适当的位置对数组的元素进行排序,并返回排序后的数组。
语法:arr.sort() 元素按照转换为的字符串的诸个字符的Unicode位点进行排序
arr.sort(compareFunction) comparFunction接受两个参数a,b进行比较,如果返回值<0,a在b之前;返回值=0,位置不变;返回值大于0,b在a前面
返回值:排序后的数组 (原数组改变)
|
|
map()(目的是遍历数组并返回一个新数组)
map()方法对数组的所有成员依次调用一个函数,根据函数结果返回一个新数组。
语法:
|
|
参数:currentValue:当前成员 / index 位置索引 / array 数组本身
返回值:一个新数组,每个元素都是回调函数的结果 (不改变原数组)
可用于字符串
|
|
forEach()(目的是遍历元素执行某个操作)
forEach() 方法对数组的每个元素执行一次提供的函数。
语法:
|
|
参数:和map一致
返回值:undefined 注意和map的区别
注:forEach()
方法无法中断执行,总是会将所有成员遍历完。如果希望符合某种条件时,就中断遍历,要使用for
循环。
forEach
()方法不会跳过undefined
和null
,但会跳过空位。
filter()(用来筛选)
filter() 方法把返回结果为
true
的成员组成一个新数组返回。
语法:var new_array = arr.filter(callback[, thisArg])
参数:callback接受三个参数(类似map(),forEach()),currentValue:当前成员 / index 位置索引 / array 数组本身
返回值:一个新的通过测试的元素的集合的数组(不改变原数组)
|
|
some() & every()
some() 方法测试数组中的某些元素是否通过由提供的函数实现的测试。
some
方法是只要有一个数组成员的返回值是true
,则整个some
方法的返回值就是true
,否则false
。every()方法测试数组的所有元素是否都通过了指定函数的测试。
every
方法则是所有数组成员的返回值都是true
,才返回true
,否则false
。
语法:arr.some(callback[, thisArg])
arr.every(callback[, thisArg])
参数:callback接受三个参数(类似map(),forEach(),filter())
返回值:布尔值 (不改变原数组)
reduce() & reduceRight()
reduce()方法对累加器和数组中的每个元素 (从左到右)应用一个函数,将其减少为单个值。
语法:array.reduce(function(accumulator, currentValue, currentIndex, array), initialValue)
参数(前两个必须):accumulator:初始值(默认第一个),或者提供的初始值initialValue
currentValue:正在处理的元素(如果没有设置初始值initialValue,则从index=1开始,如果设置了,从index=0开始)
currentIndex:索引
array:原数组
initialValue:其值用于第一次调用 callback 的第一个参数。如果没有设置初始值,则将数组中的第一个元素作为初始值。
返回值:函数累计处理的结果 (原数组不变)
- 数组累加和
|
|
indexOf() & lastIndexOf()
indexOf()方法返回在数组中可以找到一个给定元素的第一个索引,如果不存在,则返回-1。
语法:arr.indexOf(searchElement) / arr.indexOf(searchElement[, fromIndex = 0])
返回值:首个被找到的元素在数组中的索引位置; 若没有找到则返回 -1
|
|
扩展运算符…
扩展运算符(spread)是三个点(
...
)。它好比 rest 参数的逆运算,将一个数组转为用逗号分隔的参数序列。
传递一个数组作为参数
123456function test(x,y,z){console.log(x+y+z)}var args=[1,2,3]test(...args)//6合并数组(也可以用concat(),或者split(),push(),unshift())
1234567891011var arr1=[1,2,3]var arr2=[7,8,9]------var arr = arr1.concat(arr2)//arr [1,2,3,7,8,9]------var arr=[...arr2,'tom',...arr1,'jack']//[7,8,9,'tom',1,2,3,'jack']-----------var arr4 = arr1.push(...arr2) or/arr1.push.apply(arr1,arr2)//[1,2,3,7,8,9]拷贝数组(也可以用arr.slice())
12var arr1 =[1,2,3]var arr2=[...arr1]求数组的最大值
123var arr=[1,2,3,54,65,7]Math.max(...arr) === Math.max.apply(null,arr)//65将字符串转为数组
123456[...'hello']//["h", "e", "l", "l", "o"]-------------"hello".split("") //["h", "e", "l", "l", "o"]------------Array.from('tom') // ["t","o","m"]
Array.from()
从一个类似数组或可迭代的对象中创建一个新的数组实例。只要是部署了Iterator接口的数据结构,
Array.from
都能将其转为数组。
语法:Array.from(arrayLike[, mapFn[, thisArg]])
参数:arrayLike
:想要转换成真实数组的类数组对象或可遍历对象。
mapFn
:可选参数,如果指定了该参数,则最后生成的数组会经过该函数的加工处理后再返回。
thisArg
:可选参数,执行 mapFn
函数时 this
的值。
字符串
12Array.from('tom')//["t","o","m"] 类似[...'tom']DOM操作返回的NodeList集合
1234let p = document.querySelectorAll('p');Array.from(p).forEach(function (p) {console.log(p);});函数内部的arguments对象
1234function foo(){var args=Array.from(arguments)......}Array.from
方法还支持类似数组的对象。所谓类似数组的对象,本质特征只有一点,即必须有length
属性。因此,任何有length
属性的对象,都可以通过Array.from
方法转为数组.12345Array.from({ '1':'sdf','2':'sdf',length: 4 })//[undefined, "sdf", "sdf", undefined]-------------Array.from({ length: 3 });// [ undefined, undefined, undefined ]Array.from
还可以接受第二个参数,作用类似于数组的map
方法,用来对每个元素进行处理,将处理后的值放入返回的数组。123456789Array.from(arrayLike, x => x * x);// 等同于Array.from(arrayLike).map(x => x * x);Array.from([1, 2, 3], (x) => x * x)// [1, 4, 9]------------------Array.from([1,,2,,3],(n)=>n||0) 把布尔值为false转为0[1,0,2,0,3]
Array.of()
Array.of
总是返回参数值组成的数组。如果没有参数,就返回一个空数组。
|
|
copyWithin()
copyWithin() 方法浅复制数组的一部分到同一数组中的另一个位置,并返回它,而不修改其大小。
注:返回一个新的数组,(改变原数组,但是不改变原数组长度)
参数可以是负数,-1表示数组最后一个数
|
|
find() & findIndex()
find()方法返回数组中满足提供的测试函数的第一个元素的值。否则返回 undefined
语法:arr.find(callback[, thisArg]) ,它的参数是一个回调函数,所有数组成员依次执行该回调函数,直到找出第一个返回值为true
的成员,然后返回该成员。如果没有符合条件的成员,则返回undefined
。
参数:参数的回调函数接受三个参数,(element , index , array)
|
|
|
|
fill()
fill() 方法用一个固定值填充一个数组中从起始索引到终止索引内的全部元素。(可以替换数组里的值)
语法:arr.fill(value, start, end) (具体要填充的元素区间是 [start
, end
) , 一个半开半闭区间)
返回值:修改后的数组
|
|
keys() , values() , entries()
用于遍历数组。它们都返回一个遍历器对象,可以用for...of
循环进行遍历,唯一的区别是keys()
是对键名的遍历、values()
是对键值的遍历,entries()
是对键值对的遍历。
|
|
|
|
includes()和字符串的方法类似
语法:arr.includes(searchElement, fromIndex)
|
|