ES6中的数组方法

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。

返回值:修改后的数组。(不是返回副本)

  1. fill 方法是个可变方法, 它会改变调用它的 this 对象本身, 然后返回它, 而并不是返回一个副本。
  2. 当一个对象被传递给 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]。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值