Array.from();从一个类似数组或者可跌送对象中创建一个新的对象
Array.from(arrayLike, mapFn, thisArg)
arrayLike 转换伪数组对象或可跌送对象
mapFn(可选) 新数组的元素会执行该callback
thisArg(可选) 执行mapFn时候的this对象
const arr=["a","b","c"]; // const定义的变量不可以修改,而且必须初始化。
Array.from(arr); //["a","b","c"]
Array.from('too'); //["t","o","o"]
Array.isArray() 用于确定传递的值是否是一个Array
语法:Array.isArray(obj)
返回值:如果对象是Array,则为true,否则为false
Array.isArray([1,2,3]); //true
Array.isArray({name:"aaa",age:30}); //false
Array.of() 创建一个具有可变数量参数的新数组实例
Array.of(1); //[1]
Array.prototype.concat() 用于合并两个或者多个数组 不会改变原来数组 返回一个新数组
var arr1=[1,2,3];
var arr2=['a','b','c'];
document.write(arr1.concat(arr2)); //1,2,3,a,b,c
Array.prototype.copyWithin() 复制一个数组的一部分到同一个数组的另一个位置 并返回不改变其大小
Array.prototype.copyWithin(target,start,end)
target 基底索引 如果是负数将从末尾开始计算
start 基底索引 开始复制元素的起始位置 为负数将从末尾开始计算
end 基地索引 开始复制元素的结束位置 为负数从末尾开始 计算
["alpha", "beta", "copy", "delta"].copyWithin(1, 2, 3);
// 0:"alpha" 1:"beta" 2:"copy" 3:"delta"
// ["alpha", "copy", "copy", "delta"]
// 0:"alpha" 1:"copy" 2:"copy" 3:"delta"
// target === 1:"beta"
// start === 2:"copy",
// end === 3:"delta"
// 1:"beta" => 1:"copy"
['alpha', 'bravo', 'charlie', 'delta'].copyWithin(2, 0);
// results in ["alpha", "bravo", "alpha", "bravo"]
Arrray.prototype.entries() 返回一个新的Array lterator对象 该对象包含数组中每个索引的值/值对
var arr=['a','b','c'];
var iterator = arr.entries();
document.write(iterator); //[object Array Iterator]
document.write(iterator.next().value);
// [0, "a"]
document.write(iterator.next().value);
// [1, "b"]
document.write(iterator.next().value);
// [2, "c"]
Array.prototype.join()将一个数组的所有元素连接成一个字符串并返回这个字符串
let color=['red','blue','green'];
console.log(color.join()); //red,blue,green
console.log(color.join("")); //分隔符===空字符串"" redbluegreen
push() 将一个或者多个元素添加到数组末尾 并返回新数组长度
var fruits=['apple','pear','orange'];
fruits.push('banana');
document.write(fruits); //apple,pear,orange,banana
pop() 删除最后一个元素并返回该元素的值
let fruits=['apple','pear','orange']; //length 3
fruits.pop();
document.write(fruits); //apple,pear length 2
sort() 对数组的元素进行排序并返回数组 排序不一定是稳定 默认排序是根据字符串Unicode码点
var color=['red','green','blue'];
color.sort();
document.write(color); //blue,green,red a-z的顺序排列
var arr2=[12,8,19,13,99,112,2];
// alert(arr2.sort()); 错误
//对数字进行排序可以直接用sort
function numSort(a,b){
if(a<b){
return -999;
}
if(a>b){
return 999;
}
else {
return 0
}
}
alert(arr2.sort(numSort));
function compare(a,b){
return b-a;
}
alert(arr2.sort(compare));
shift() 从数组里删除第一个元素 返回该元素的值
let color=['red','green','blue'];
let c=color.shift();
console.log(color); // green blue
console.log(c); //red
unshift() 将一个或多个元素添加到数组的开头 并返回数字的新长度
let color=['red','green','blue'];
color.unshift('yellow','while');
console.log(color); // ["yellow", "while", "red", "green", "blue"]
reverse() 将数组中的元素位置颠倒
第一个数组元素成为最后一个数组元素 最后一个数组元素成为第一个
var color=['yellow','red','green'];
color.reverse();
console.log(color); // ["green", "red", "yellow"]
splice() 可以通过删除现有的元素/也可以删除新元素更改数组
var color=['yellow','red','green'];
var removed=color.splice(2,0,'white'); //从第2位开始删除0个元素插入white
console.log(color); // ["yellow", "red", "white", "green"]
var color=['yellow','red','green','blue','brown'];
var removed=color.splice(3,1); //从第3位开始删除第一个元素
console.log(color); // ["yellow", "red", "green", "brown"]
slice() 返回一个从开始到结束(不包括结束)选择的数组的一部分浅拷贝到一个新的数组对象
var color = ['white', 'red', 'green', 'yellow', 'black'];
console.log(color.slice(2)); //["green", "yellow", "black"]
console.log(color.slice(2, 4)); //["green", "yellow"]
console.log(color.slice(1, 5)); //["red", "green", "yellow", "black"]
lastIndexOf() 返回指定元素 在数组中的最后一个索引 如果不存在则返回-1 从数组后面向前查找
var array = [2, 5, 9, 2];
var index = array.lastIndexOf(2);
// index is 3
indexOf() 返回数组中可以找到一个给定元素的第一个索引 如果不存在返回-1
let num=[1,2,3,4,5]
console.log(num.indexOf(1)); //0
console.log(num.indexOf(6)); //-1
console.log(num.indexOf(3)); //2
console.log(num.indexOf(4)); //3
map() 映射 创建一个新的数组 其结果是该数组中每个元素都调用一个提供的函数后返回的结果
const num = [2, 4, 8, 10];
let num1 = num.map(x => x / 2);
console.log(num1); //[1, 2, 4, 5]
forEach() 对数组进行遍历循环 对数组每一个给定函数
var color=['white','yellow','green'];
color.forEach(function(ele){
console.log(ele); //依次输出 white yellow green
})
every() 测试数组的元素是否通过了指定函数 才会返回true
function num(element,index,array){
return (element>=10);
}
var arr=[1,22,18,15].every(num);
alert(arr); //false
filter() 过滤 创建一个新数组 其包含通过所提供函数实现的测试所有元素
function num(element){
return (element>=10);
}
var arr=[1,22,2,3,18,15].filter(num);
document.write(arr); //22,18,15
reduce() 对累加器和数组中的每个元素(从左到右)应用一个函数 将其减少为单个值 从数组第一项开始 到最后
const arr = [1, 2, 3, 4];
const reducer = (prev, next) => prev + next;
// 1 + 2 + 3 + 4
console.log(arr.reduce(reducer)); //10
some() 判断数组中是否存在满足条件的项 只有一个条件满足 返回truefunction someMethod(ele,index,array){
return ele>10;
}
var arr=[2,5,4,7,8,9].some(someMethod);
document.write(arr); //false
var arr1=[15,1,2,3,4].some(someMethod);
document.write(arr1); //true
reduceRight() 从数组最后一个开始,向前遍历每一项 与reduce()相反
var arr=[1,2,3,4,5,6].reduceRight(function(ele,cur,index,array){
return ele+cur;
},5) //初始值是5
document.write(arr); //26