1. Array.from(arrLike,[mapFn],[this])
描述:用于从类数组对象或可迭代对象(数组,有length属性的对象,字符串,ES6中的Map和Set)创建一个新的,浅复制的数组实例
参数:
arrLike:arrLike:可迭代对象或者任意拥有length属性和若干索引属性的对象
mapFn:在生成的数组实例基础上,对每一个元素执行的map方法
this:执行回调函数时的this对象
返回值:一个新的数组实例。
//由字符串生成数组
let str = "hello";
let result = Array.from(str);
console.log(result); //[ 'h', 'e', 'l', 'l', 'o' ]
//由set生成数组
const set = new Set(['foo', 'bar', 'baz', 'foo']);
Array.from(set);
//由 Map 生成数组
const map = new Map([[1, 2], [2, 4], [4, 8]]);
Array.from(map); // [[1, 2], [2, 4], [4, 8]]
const mapper = new Map([['1', 'a'], ['2', 'b']]);
Array.from(mapper.values()); // ['a', 'b'];
Array.from(mapper.keys()); // ['1', '2'];
//在 Array.from 中使用箭头函数,可以用来创建一个定长的数组,并且初始化所有元素
Array.from([1, 2, 3], x => x + x); // [2, 4, 6]
Array.from({length: 5}, (v, i) => i); // [0, 1, 2, 3, 4]
2. Array.of(element,element…)
描述:Array.of() 方法创建一个具有可变数量参数的新数组实例,而不考虑参数的数量或类型。
参数:任意个参数,将按顺序成为返回数组中的元素。
返回值:新的 Array 实例。
Array.of(1); // [1]
Array.of(1, 2, 3); // [1, 2, 3]
Array.of(undefined); // [undefined]
Array.of() 和 Array 构造函数之间的区别在于处理整数参数:Array.of(7) 创建一个具有单个元素 7 的数组,而 Array(7) 创建一个长度为7的空数组(注意:这是指一个有7个空位(empty)的数组,而不是由7个undefined组成的数组)
3. Array.prototype.find(callback(item,index,arr),[this])
描述:find方法对数组中的每一项元素执行一次 callback 函数,直至有一个 callback 返回 true。当找到了这样一个元素后,该方法会立即返回这个元素的值,否则返回 undefined。
参数:
callback(item,index,arr):回调函数
this:回调函数this指向
返回值:数组中第一个满足所提供测试函数的元素的值,否则返回 undefined。
//用对象的属性名获取数组中的对象
let obj = {
name: 'lisi',
age:12
}
let obj2 = {
name: 'wangwu',
age:13
}
function back(item,index,arr) {
return item.name === 'lisi';
}
let arr = [obj,obj2];
let result = arr.find(back);
console.log(result);
//寻找数组中的第一个质数
function isPrime(item,index,arr) {
for(let i=2; i<=Math.floor(Math.sqrt(item)); i++){
if(item % i === 0){
return false;
}
}
return item > 1;
}
let arr = [9,6,8,4,5];
let result = arr.find(isPrime);
console.log(result);
4.Array.prototype.findIndex(callback(item,index,arr),[this])
描述:返回数组中满足提供的测试函数的第一个元素的索引。若没有找到对应元素则返回-1。
参数:
callback(item,index,arr):针对数组中的每个元素, 都会执行该回调函数
this:回调函数this指向
返回值:数组中第一个满足所提供测试函数的元素的值,否则返回 undefined。
5. Array.prototype.fill(value,[begin],[end])
描述:用一个固定值填充一个数组中从起始索引到终止索引内的全部元素。不包括终止索引。
参数:
value:填充的值
value:开始位置的索引。如果 start 是个负数, 则开始索引会被自动计算成为 length+start
value:结束位置索引。如果 end 是个负数, 则结束索引会被自动计算成为 length+end。
返回值:修改后的数组。(不是返回副本)
- fill 方法是个可变方法, 它会改变调用它的 this 对象本身, 然后返回它, 而并不是返回一个副本。
- 当一个对象被传递给 fill方法的时候, 填充数组的是这个对象的引用。
6.Array.prototype.includes(value,[fromIndex])
描述:用来判断一个数组是否包含一个指定的值,根据情况,如果包含则返回 true,否则返回false。
参数:
value:需要查找的元素值
fromIndex:开始查找的位置,默认为0。如果是负数,则从arr.length + fromIndex处开始查找。
7.Array.prototype.keys()
描述:返回一个包含数组中每个索引键的Array Iterator对象。
参数:无
返回值:一个新的 Array 迭代对象。
8.Array.prototype.values()
描述:返回一个新的 Array Iterator 对象,该对象包含数组每个索引的值
参数:无
返回值:一个新的 Array 迭代对象。
//使用for...of循环进行迭代
let arr = ['w', 'y', 'k', 'o', 'p'];
let eArr = arr.values();
for (let letter of eArr) {
console.log(letter);
} //"w" "y "k" "o" "p"
//使用 .next() 迭代
var arr = ['a', 'b', 'c', 'd', 'e'];
var iterator = arr.values();
iterator.next(); // Object { value: "a", done: false }
iterator.next().value; // "b"
iterator.next()["value"]; // "c"
iterator.next(); // Object { value: "d", done: false }
iterator.next(); // Object { value: "e", done: false }
iterator.next(); // Object { value: undefined, done: true }
iteraroe.next().value; // undefined
//数组迭代器是一次性的,或者说临时对象
9. Array.prototype.entries()
描述:返回一个新的Array Iterator对象,该对象包含数组中每个索引的键/值对。
参数:无
返回值:一个新的 Array 迭代器对象。Array Iterator是对象,它的原型(proto:Array Iterator)上有一个next方法,可用用于遍历迭代器取得原数组的[key,value]。