1, reverse:将数组反序,原数组改变
var a = [1,2,3,4,5];
var b = a.reverse(); //a:[5,4,3,2,1] b:[5,4,3,2,1]
2,sort(orderfunction):按指定的参数对数组进行排序,原数组改变
var a = [5,4,3,2,1];
var b = a.sort(); //a:[1,2,3,4,5 ] b:[1,2,3,4,5]
function compare(a,b){return b-a};
B = a.sort(compare) //
[5,4,3,2,1]
3, slice(start,end):返回从原数组中指定开始下标到结束下标之间的项组成的新数组 ,不写数字,默认全部,原数组不变
var a = [1,2,3,4,5];
var b = a.slice(2,5); //a:[1,2,3,4,5] b:[3,4,5]
var b = a.slice(2,5); //a:[1,2,3,4,5] b:[3,4,5]
4, join(separator):将数组的元素组起一个字符串,以separator为分隔符,省略的话则用默认用逗号为分隔符,原数组不变
var a = [1,2,3,4,5];
var b = a.join("|"); //a:[1,2,3,4,5] b:"1|2|3|4|5"
var b = a.join("|"); //a:[1,2,3,4,5] b:"1|2|3|4|5"
5,concat:返回一个新数组,是将参数添加到原数组中构成的,原数组不变
var a = [1,2,3,4,5];
var b = a.concat(6,7); //a:[1,2,3,4,5] b:[1,2,3,4,5,6,7]
var b = [...a, ...[6,7]] //a:[1,2,3,4,5] b:[1,2,3,4,5,6,7]
6,push:将参数添加到原数组末尾,并返回数组的长度 ,原数组改变
var a = [1,2,3,4,5];
var b = a.push(6,7); //a:[1,2,3,4,5,6,7] b:7
var b = a.push(6,7); //a:[1,2,3,4,5,6,7] b:7
push.apply数组后面添加数组
var a = [1,2,3,4,5];
var b= [33,22,7,8];
a.push.apply(a,b); //a:[1,2,3,4,5,33,22,7,8]
var b= [33,22,7,8];
a.push.apply(a,b); //a:[1,2,3,4,5,33,22,7,8]
7,
unshift:将参数添加到原数组开头,并返回数组的长度
var a = [1,2,3,4,5];
var b = a.unshift(-2,-1); //a:[-2,-1,1,2,3,4,5] b:7
var b = a.unshift(-2,-1); //a:[-2,-1,1,2,3,4,5] b:7
8,
shift:删除原数组第一项,并返回删除元素的值;如果数组为空则返回undefined
var a = [6,1,2,3,4,5];
var b = a.shift(); //a:[1,2,3,4,5] b:6
var b = a.shift(); //a:[1,2,3,4,5] b:6
9,
pop:删除原数组最后一项,并返回删除元素的值;如果数组为空则返回undefined
var a = [1,2,3,4,5];
var b = a.pop(); //a:[1,2,3,4] b:5
var b = a.pop(); //a:[1,2,3,4] b:5
10, splice(start,deleteCount,val1,val2,...):从start位置开始删除deleteCount项,并从该位置起插入val1,val2,...
以数组形式返回删除掉的项
var a = [1,2,3,4,5];
var b = a.splice(2,2,7,8,9); //a:[1,2,7,8,9,5] b:[3,4]
var b = a.splice(0,1); //同shift
a.splice(0,0,-2,-1); var b = a.length; //同unshift
var b = a.splice(a.length-1,1); //同pop
a.splice(a.length,0,6,7); var b = a.length; //同push
var b = a.splice(2,2,7,8,9); //a:[1,2,7,8,9,5] b:[3,4]
var b = a.splice(0,1); //同shift
a.splice(0,0,-2,-1); var b = a.length; //同unshift
var b = a.splice(a.length-1,1); //同pop
a.splice(a.length,0,6,7); var b = a.length; //同push
11,arr.includes(searchElement, fromIndex)目标,起始位置,默认从0开始,大于数组长度返回false. 为负数从倒数开始,如果大于数组长度从0开始
var a = [1,2,3,4,5];
a.includes(2) //true
a.includes(2, 2) //false
a.includes(2, -1) //false
a.includes(2, -6) //true
12,indexOf 查找子项在数组的位置(下标), 查找字符在字符串中的位置
stringObject.indexOf(searchvalue,fromindex)
参数 | 描述 |
searchvalue | 必需。规定需检索的字符串值。 |
fromindex | 可选的整数参数。规定在字符串中开始检索的位置。 它的合法取值是 0 到 stringObject.length - 1。 如省略该参数,则将从字符串的首字符开始检索。 |
var a = [1,2,2,3,423,3,4,5];
a.indexOf(2) //1
‘asdfqwew’.indexOf(‘d’) //2
13,lastIndexOf查找子项在数组最后出现的位置,默认从末尾开始查询,stringObject.lastIndexOf(searchvalue,fromindex)
参数 | 描述 |
searchvalue | 必需。规定需检索的字符串值。 |
fromindex | 可选的整数参数。规定在字符串中开始检索的位置。 它的合法取值是 0 到 stringObject.length - 1。
如省略该参数,则将从字符串的最后一个字符处开始检索。
|
14,reduce 数组求和array.reduce(callbackfn(previousValue, currentValue, currentIndex, array1), initialValue)
previousValue
|
通过上一次调用回调函数获得的值。如果向 reduce 方法提供 initialValue,则在首次调用函数时,previousValue 为 initialValue。
|
currentValue
|
当前数组元素的值。
|
currentIndex
|
当前数组元素的数字索引。
|
array1
|
包含该元素的数组对象。
|
initialValue
|
可选。如果指定 initialValue,则它将用作初始值来启动累积。第一次调用 callbackfn 函数会将此值作为参数而非数组值提供。
|
var a = [1,2,3,4,5,6];
var num = a.reduce((prev, cur, index, array) => {
return prev + cur;
}) // num = 21
var a = [1,2,3,4,5,6];
var num = a.reduce((prev, cur, index, array) => {
return prev + cur;
}
, 10) // num = 31
15,Math.max(…Array) Math.min(..Array.)数组求最大值,最小值
var a = [1,3,2,5,11,43,4];
var max = Math.max(…a) //43
var min = Math.min(…a) //1
15,
filter() 已数组形式返回通过筛选的项。 注意: filter() 不会对空数组进行检测。filter() 不会改变原始数组。
var filteredArray = array.filter(callback, thisObject) callback回调函数 thisObject 当前this指向,不写为null,指向全局window
callback(item, index, array) item 必填,当前项值
index 选填,当前项下标 array 选填,当期元素属于的数组对象
var ages = [32, 33, 16, 40];
function get(item, index, array) { console.log(item, index, this, array, 222); return index > 0
};
var a = ages.filter(get, ages)
// 32 0 (4) [32, 33, 16, 40] (4) [32, 33, 16, 40] 222
// 33 1 (4) [32, 33, 16, 40] (4) [32, 33, 16, 40] 222
// 16 2 (4) [32, 33, 16, 40] (4) [32, 33, 16, 40] 222
// 40 3 (4) [32, 33, 16, 40] (4) [32, 33, 16, 40] 222
a的值,筛选下标 [33,16,40]
//使用箭头函数的情况
var a = ages.filter((item, index, array) => {
console.log(item, index, array, this, 2222);
return item > 30}
, ages)
a的值 [32,33,40]
// 32 0 (4) [32, 33, 16, 40] Window 2222
// 33 1 (4) [32, 33, 16, 40] Window 2222
// 16 2 (4) [32, 33, 16, 40] Window 2222
// 40 3 (4) [32, 33, 16, 40] Window 2222
var a = ages.some((item, index, array) => {
console.log(item, index, array, this, 2222);
return item > 30}
, ages) //true
var a = ages.every((item, index, array) => {
console.log(item, index, array, this, 2222);
return item > 30}
, ages) //false
var a = ages.map((item, index, array) => {
console.log(item, index, array, this, 2222);
return item + 10}
, ages) //[42, 43, 26, 50]
数组与对象操作方法的对比
//Array:
/*新建:*/var ary = new Array(); 或 var ary = [];
/*增加:*/ary.push(value);
/*删除:*/delete ary[n];
/*遍历:*/for ( var i=0 ; i < ary.length ; ++i ) ary[i];
//Object:
/*新建:*/var obj = new Object(); 或 var obj = {};
/*增加:*/obj[key] = value; (key为string)
/*删除:*/delete obj[key];
/*遍历:*/for ( var key in obj ) obj[key];