JavaScript ES6 Array.from方法总结

本文深入探讨ES6中Array.from()函数的多种用途,包括从Set、Map、String及类数组对象生成数组,实现数组拷贝与初始化,以及如何结合Set对象去除数组重复元素。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本篇文章参考以下博文

一、前言

  最近在使用 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; // => [{}, {}, {}]

  




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值