js / 学习 · 2022年5月24日 0

js打乱数组,数组方法。

function randomsort(a,b){

return Math.random()>0.5 ? -1 : 1;

}

var arr=[1,2,3,4,5,6,7,8];

arr.sort(randomsort);

sort() 数组排序

传比较函数的话,默认按字母升序,如果不是元素不是字符串的话,会调用toString()

创建数组

ES6 Array.of() 返回由所有参数值组成的数组

Array.of(3, 11, 8); // [3,11,8]

ES6 Arrar.from() 将两类对象转为真正的数组

第一个参数(必需):要转化为真正数组的对象。

第二个参数(可选): 类似数组的map方法,对每个元素进行处理,将处理后的值放入返回的数组。

第三个参数(可选): 用来绑定this。

改变原数组

pop() 删除一个数组中的最后的一个元素,并且返回这个元素。

shift() 删除数组的第一个元素,并且返回这个元素。

push() 向数组的末尾添加元素,并返回新的长度

unshift() 方法可向数组的开头添加一个或更多元素,并返回新的长度

reverse() 颠倒数组中元素的顺序

splice() 添加/删除数组元素,然后返回被删除的项目

index:必需。整数,规定添加/删除项目的位置,使用负数可从数组结尾处规定位置。

howmany:必需。要删除的项目数量。如果设置为 0,则不会删除项目

item1, …, itemX: 可选。向数组添加的新项目。

返回值: 如果有元素被删除,返回包含被删除项目的新数组。

sort() 数组排序

方法对数组元素进行排序,并返回这个数组。

sort的比较函数有两个默认参数,要在函数中接收这两个参数,这两个参数是数组中两个要比较的元素,通常我们用 a 和 b 接收两个将要比较的元素:

  • 若比较函数返回值<0,那么a将排到b的前面;
  • 若比较函数返回值=0,那么a 和 b 相对位置不变;
  • 若比较函数返回值>0,那么b 排在a 将的前面;

ES6: copyWithin() 指定位置的成员复制到其他位置

在当前数组内部,将指定位置的成员复制到其他位置,并返回这个数组。

  1. target(必需):从该位置开始替换数据。如果为负值,表示倒数。
  2. start(可选):从该位置开始读取数据,默认为 0。如果为负值,表示倒数。
  3. end(可选):到该位置前停止读取数据,默认等于数组长度。使用负数可从数组结尾处规定位置。
  4. fill() 填充数组

第一个元素(必须): 要填充数组的值

第二个元素(可选): 填充的开始位置,默认值为0

第三个元素(可选):填充的结束位置,默认是为this.length

不改变原数组

join() 数组转字符串

str(可选): 指定要使用的分隔符,默认使用逗号作为分隔符。

toLocaleString() 数组转字符串

toString() 数组转字符串 不推荐

slice() 浅拷贝数组的元素

begin(可选): 索引数值,接受负值,从该索引处开始提取原数组中的元素,默认值为0。

end(可选):索引数值(不包括),接受负值,在该索引处前结束提取原数组元素,默认值为数组末尾(包括最后一个元素)。

cancat()合并两个或多个数组,返回一个新数组

arrayX(必须):该参数可以是具体的值,也可以是数组对象。可以是任意多个

indexOf() 查找数组是否存在某个元素,返回下标

searchElement(必须):被查找的元素

fromIndex(可选):开始查找的位置(不能大于等于数组的长度,返回-1),接受负值,默认值为0。

lastIndexOf() 查找指定元素在数组中的最后一个位置

searchElement(必须): 被查找的元素

fromIndex(可选): 逆向查找开始位置,默认值数组的长度-1,即查找整个数组。

ES7 includes() 查找数组是否包含某个元素 返回布尔

searchElement(必须):被查找的元素

fromIndex(可选):默认值为0,参数表示搜索的起始位置,接受负值。正值超过数组长度,数组不会被搜索,返回false。负值绝对值超过长数组度,重置从0开始搜索。

遍历方法

forEach

array.forEach(function(currentValue, index, arr), thisValue)

1. currentValue(必须),数组当前元素的值
2. index(可选), 当前元素的索引值
3. arr(可选),数组对象本身

every 检测数组所有元素是否都符合判断条件

array.every(function(currentValue, index, arr), thisValue)数组所有元素是否都符合函数定义的条件

some 数组中的是否有满足判断条件的元素

array.some(function(currentValue, index, arr), thisValue)数组中的是否有满足判断条件的元素

filter 过滤原始数组,返回新数组

let new_array = arr.filter(function(currentValue, index, arr), thisArg)

map 对数组中的每个元素进行处理,返回新的数组

let new_array = arr.map(function(currentValue, index, arr), thisArg)

reduce 为数组提供累加器,合并为一个值

reduceRight 从右至左累加 与reduce执行方向相反

ES6:find()& findIndex() 根据条件找到数组成员

let new_array = arr.find(function(currentValue, index, arr), thisArg)

let a = [1, 4, -5, 10].find((n) => n < 0); // 返回元素-5

let a = [1, 4, -5, 10].findIndex((n) => n < 0); // 返回索引2

ES6 keys()&values()&entries() 遍历键名、遍历键值、遍历键名+键值

for(let index of [‘a’, ‘b’].keys()) { console.log(index);}// 0// 1