- indexOf()方法
- 从前往后查询数组指定元素的第一个索引
var arr = [1,2,3,4,2]
console.log(arr.indexOf(2)) // 1- lastIndexOf()方法
- 从后往前查询数组指定元素的第一个索引
var arr = [1,2,3,4,2]
console.log(arr.indexOf(2)) // 4- concat()方法
- 拼接两个数组,不修改原数组,返回一个新数组
var arr = [1,2,3,4]
var arr2 = [7,8,9,7]
console.log(arr.concat(arr2)) //[1, 2, 3, 4,7, 8, 9, 7] - valueOf()方法
valueOf() 方法返回 Array 对象的原始值。该原始值由 Array 对象派生的所有对象继承。valueOf() 方法通常由 JavaScript 在后台自动调用,并不显式地出现在代码中。
var arr = [1,2,3,4]
var arr2 = [7,8,9,7]
console.log(arr.values())//Object [Array Iterator] {} - reduce()方法
- reduce(function(prevalue,value,index,arr){},initPrevalue),接收两个参数,第一个参数是一个回调函数,每次遍历数组的值都会执行一次回调函数,回调函数的第一个参数是上一次的返回值,第二个参数的当前遍历的值,第三个参数是当前值的索引,第四个参数是当前值所在的数组;第二个参数是一个可选的数值,如果不选,默认回调函数第一次的preValue为undefined
//数组去重
function createArr(arr) {
return arr.reduce((preitem, item) => {
console.log(preitem)
return preitem.concat(Array.isArray(item)?createArr(item):item)
},[])
} - reduceRight()方法
- 基本和reduce()方法一样,不过reduce()是从第一个元素开始遍历,reduceRight()是从最后一个元素开始遍历
- slice()方法
- slice(start,end)接收两个参数,start代表开始截取的下标,end可选,代表需要截取的后一个坐标,slice()方法不会改变原数组
var arr = [1,2,3,4]
var arr2 = [7,8,9,7]
var result = arr.slice(0,2)
console.log(result, arr) // [ 1, 2 ] [ 1, 2, 3, 4 ]- splice()方法
- splice(index,howmany,item0...itemx)方法会改变原数组,该方法表示从数组中删去指定的元素并返一个数组,同时也可以填充相应的元素
var arr = [1,2,3,4]
var arr2 = [7,8,9,7]
var result = arr.splice(0,3,2,5)
console.log(result, arr) // [ 1, 2, 3 ] [ 2, 5, 4 ] - map()方法
- map(function(item,index,arr){},thisValue)方法返回一个数组对象,其中item为当前遍历的值,index为当前遍历的值的索引,arr为当前遍历的值所在的数组。thisValue可选。对象作为该执行回调时使用,传递给函数,用作 "this" 的值。如果省略了 thisValue,或者传入 null、undefined,那么回调函数的 this 为全局对象。
var arr = [1,2,3,4]
var arr2 = [7,8,9,7]
console.log(arr.map(item => { return item * 2})) //[ 2, 4, 6, 8 ]- reverse()方法
- reverse() 方法用于颠倒数组中元素的顺序
var arr = [1,2,3,4]
var arr2 = [7,8,9,7]console.log(arr.reverse())- join()方法
- 把数组的所有元素放入一个字符串。元素通过指定的分隔符进行分隔。
var arr = [1,2,3,4]
var arr2 = [7,8,9,7]
console.log(arr.join("")) // 1234- toString()方法
- 将数组转化为字符串并返回结果,和不带参数的join()方法功能一样
- toLocalString()方法
- 把数组转换为本地字符串。
- sort()方法
- 方法sort()将在原数组上对数组元素进行排序,即排序时不创建新的数组副本。如果调用方法sort()时没有使用参数,将按字母顺序(更为精确地说,是按照字符编码的顺序)对数组中的元素进行排序。要实现这一点,首先应把数组的元素都转换成字符串(如果有必要的话),以便进行比较。如果想按照别的顺序进行排序,就必须提供比较函数,该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。比较函数应该具有两个参数a和b,其返回值如下:
如果根据你的评判标准,a小于b,在排序后的数组中a应该出现在b之前,就返回一个小于0的值。如果a等于b,就返回0。注意,数组中undefined的元素都排列在数组末尾。即使你提供了自定义的排序函数也是这样,因为undefined值不会被传递给你提供的orderfunc。JavaScript中数组的sort()方法主要用于对数组的元素进行排序。其中,sort()方法有一个可选参数。但是,此参数必须是函数。 数组在调用sort()方法时,如果没有传参将按字母顺序(字符编码顺序)对数组中的元素进行排序,如果想按照其他标准进行排序,就需要进行传一个参数且为函数,该函数要比较两个值,并且会返回一个用于说明这两个值的相对顺序的数字。
var arr = [22,12,3,43,56,47,4];
arr.sort();
console.log(arr); // [12, 22, 3, 4, 43, 47, 56]
arr.sort(function (m, n) {
if (m < n) return -1 else if (m > n) return 1
else return 0});
console.log(arr); // [3, 4, 12, 22, 43, 47, 56]- filter()方法
- filter方法接收两个参数,一个回调函数,一个上下文对象,回调函数接收三个参数
var arr = [1,2,3,4]
var arr2 = [7,8,9,7] console.log(arr.filter((item,index,arr)=>{
rturn item>2
})) // [ 3, 4 ]- fill()方法
fill()方法,使用自己想要的参数替换原数组内容,但是会改变原来的数组。该方法有三个参数:fill(value, start, end) value:想要替换的内容。start:开始位置(数组的下标),可以省略。end:替换结束位置(数组的下标),如果省略不写就默认为数组结束
var arr = [1,2,3,4]
var arr2 = [7,8,9,7] var result = arr.fill("hello",1,3)
console.log(result, arr) // [ 1, 'hello', 'hello', 4 ] [ 1, 'hello', 'hello', 4 ]- from()方法
Array.from()方法从一个类似数组或可迭代对象创建一个新的,浅拷贝的数组实例。
Array.from(arrayLike[, mapFn[, thisArg]])
arrayLike想要转换成数组的伪数组对象或可迭代对象。mapFn 可选如果指定了该参数,新数组中的每个元素会执行该回调函数。thisArg 可选可选参数,执行回调函数 mapFn 时 this 对象。
console.log(Array.from('foo'));
// expected output: Array ["f", "o", "o"]
console.log(Array.from([1, 2, 3], x => x + x));
// expected output: Array [2, 4, 6]- of()方法
- Array.of()方法用于将一组数值转换为数组
const a = Array.of(2,4,6,8);
console.log(a); // [2,4,6,8]
const b = Array.of(1);
console.log(b); // [1]
const c = Array.of(1).length;
console.log(c); // 1- find()方法
- 用于找出符合条件的第一个值
const arr1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
const ret1 = arr1.findIndex((value, index, arr) => { return value > 4}) const ret2 = arr1.find((value, index, arr) => { return value > 4})
console.log('%s', ret1) // 4console.log('%s', ret2) // 5- findIndex()方法
- 用于找到符合条件的第一个值的下标,基本用法同上
- copyWithin()方法
- ES6为Array增加了copyWithin(target,start,end)函数,用于操作当前数组自身,用来把某些个位置的元素复制并覆盖到其他位置上去。该函数有三个参数。
target:目的起始位置。
start:复制源的起始位置,可以省略,可以是负数。
end:复制源的结束位置,可以省略,可以是负数,实际结束位置是end-1
var arr = [1,2,3,4,5,6,7]
arr.copyWithin(1,3,6)console.log(arr) // [1, 4, 5, 6,5, 6, 7]- includes()方法
- 用于判断数组是否含有某个值,返回一个布尔值
var arr = [1,2,3,4,5,6,7]
console.log(arr.includes(2)) // true- shift()方法
- 用于删除数组的第一个值,并返回删除的值
var arr = [1,2,3,4,5,6,7]
var result = arr.shift()
console.log(result, arr) // 1 [ 2, 3, 4, 5, 6, 7 ]- unshift方法
- 用于向数组最前面插入一个值,并返回插入之后数组的长度
var arr = [1,2,3,4,5,6,7]
var result = arr.unshift(9)console.log(result, arr) // 8 [9, 1, 2, 3,4, 5, 6, 7]- push()方法
- 用于向数组尾部加入一个值,并返回加入值后数组的长度
var arr = [1,2,3,4,5,6,7]
var result = arr.push(9)console.log(result, arr) // 8 [1, 2, 3,4, 5, 6, 7, 9]- pop()方法
- 用于弹出数组尾部的值,并返回弹出的值
var arr = [1,2,3,4,5,6,7]
var result = arr.pop()console.log(result, arr) // 7 [1, 2, 3,4, 5, 6]- every()方法
- 接收一个回调函数,在回调函数中返回一个判断条件,只要有一个是false,那么就都为false
var arr = [1,2,3,4,5,6,7]
var result = arr.every((item, index, arr) => item>2)console.log(result) // false- some()方法
- 接收一个回调函数,在回调函数中返回一个判断条件,只要有一个是true,那么就都为true
var arr = [1,2,3,4,5,6,7]
var result = arr.some((item, index, arr) => item>2)console.log(result) // true