JavaScript ES6 Array.from方法总结

本篇文章参考以下博文

一、前言

  最近在使用 Set 对象去重的时候,发现 from 函数的一些用法,感觉可以挖掘深入一些,所以写此文章总结记录,方便以后复习查看。

二、定义

   from 方法用于通过拥有 length 属性的对象或可迭代的对象来返回一个数组。

三、语法

Array.from(object, mapFunction, thisValue)
  • object 要转化成数组的对象
  • mapFunction 数组中每个元素要调用的函数
  • thisValue 设置 mapFunction 中的 this 对象

四、实例

4.1 结合 Set 去重

  这个方法最常用的应该就是配合 Set 对象,进行去重,写法如下:

Array.from(new Set(arr));

4.2 从 String 生成数组

Array.from('foo'); 
// [ "f", "o", "o" ]

4.3 从 Set 生成数组

const set = new Set(['foo', 'bar', 'baz', 'foo']);
Array.from(set);
// [ "foo", "bar", "baz" ]

4.4 从 Map 生成数组

  不光可以把 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'];

4.5 从类数组对象(arguments)生成数组

function f() {
  return Array.from(arguments);
}

f(1, 2, 3);

// [ 1, 2, 3 ]

4.6 拷贝数组

  浅拷贝

const numbers = [1, 2, 3];
const numbersCopy = Array.from(numbers);

  深拷贝,下面是通过 from 的第二个参数 对数组元素循环调用。

function recursiveClone(val) {
    return Array.isArray(val) ? Array.from(val, recursiveClone) : val;
}

4.7 初始化数组

Array.from({length: 5}, (v, i) => i);
// [0, 1, 2, 3, 4]

/****************************/

const result = Array.from({ length:3 }, () => 1);

result; // => [1, 1, 1]

/****************************/

const resultA = Array.from({ length:3 }, () => ({}));

result; // => [{}, {}, {}]

  




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ES6中,Array.from()和Array.of()都是用于创建新数组的方法,但它们的功能和使用方式有所不同。 1. Array.from(): - Array.from()方法用于从类数组对象或可迭代对象中创建一个新的数组实例。 - 它接受一个类数组对象或可迭代对象作为第一个参数,并可选地接受一个映射函数和一个上下文对象作为第二个和第三个参数。 - 它将类数组对象或可迭代对象中的每个元素转换为数组的对应元素。 - 映射函数可以在转换过程中对每个元素进行处理。 - 返回一个新的数组实例。 示例: ```javascript // 从字符串中创建数组 const str = 'hello'; const arr = Array.from(str); console.log(arr); // ['h', 'e', 'l', 'l', 'o'] // 从集合中创建数组 const set = new Set([1, 2, 3]); const arr2 = Array.from(set, num => num * 2); console.log(arr2); // [2, 4, 6] ``` 2. Array.of(): - Array.of()方法用于创建一个包含任意数量参数的新数组实例。 - 它接受任意数量的参数,并将这些参数作为数组的元素,返回一个新的数组实例。 - 它解决了使用Array构造函数创建单个元素数组时的一些问题。 示例: ```javascript const arr1 = Array.of(1, 2, 3, 4); console.log(arr1); // [1, 2, 3, 4] const arr2 = Array.of(5); console.log(arr2); // [5] const arr3 = Array.of(undefined); console.log(arr3); // [undefined] ``` 总结: - Array.from()方法用于从类数组对象或可迭代对象中创建一个新数组,并提供映射功能。 - Array.of()方法用于创建一个包含任意数量参数的新数组实例。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值