Array.from()详解

Array.from() 是 JavaScript 中的一个静态方法,用于从一个类似数组或可迭代对象(如 Set, Map 的迭代器,或者字符串、类数组对象等)创建一个新的、浅拷贝的数组实例。

语法

Array.from(arrayLike, [mapFunction, [thisArg]])
  • arrayLike:一个类数组对象或可迭代对象。
  • mapFunction(可选):一个映射函数,如果提供了这个参数,新数组中的每个元素都会通过该函数处理后再返回。
  • thisArg(可选):执行 mapFunctionthis 所指向的对象。

示例

1. 从类数组对象创建数组
let arrayLike = {0: 'a', 1: 'b', 2: 'c', length: 3};
let arr = Array.from(arrayLike);
console.log(arr); // 输出: ['a', 'b', 'c']
2. 从字符串创建数组
let str = 'hello';
let arr = Array.from(str);
console.log(arr); // 输出: ['h', 'e', 'l', 'l', 'o']
3. 从 Set 创建数组
let set = new Set(['a', 'b', 'c', 'a']);
let arr = Array.from(set);
console.log(arr); // 输出: ['a', 'b', 'c'],注意 Set 中重复的 'a' 被去除了
4. 使用 mapFunction
let numbers = {length: 2, 0: 1, 1: 2};
let arr = Array.from(numbers, function(v, i) {return v * i;
});
console.log(arr); // 输出: [0, 2],因为 1*0 = 0, 2*1 = 2// 使用箭头函数
let arr2 = Array.from(numbers, (v, i) => v * i);
console.log(arr2); // 输出: [0, 2]
5. 使用 thisArg
let obj = {value: 10,double: function(v) {return v * this.value;}
};let arr = Array.from([1, 2, 3], obj.double, obj);
console.log(arr); // 输出: [10, 20, 30],因为 1*10 = 10, 2*10 = 20, 3*10 = 30

注意事项

  • Array.from() 不会改变原数组或原对象。
  • 对于字符串、Set 和 Map 的迭代器等可迭代对象,Array.from() 方法只会复制可迭代对象的元素到新的数组中,而不会复制额外的属性。
  • 如果 arrayLike 没有 length 属性,或者 length 属性不是非负整数,那么 Array.from() 将返回一个空数组。
  • 如果 arrayLike 是数组或类数组对象,则 Array.from() 会返回一个浅拷贝的数组。这意味着如果原数组的元素是对象或数组,那么新数组中的对应元素将是这些对象或数组的引用,而不是它们的拷贝。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/7095.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据分析师方差分析,单因素方差分析、多因素方差分析、协方差分析和重复测量方差分析,医学数据分析spss

单因素方差分析、多因素方差分析、协方差分析和重复测量方差分析在统计学中各有其特定的适用场景。 单因素方差分析(One-way ANOVA):适用于检验单因素水平下的一个或多个独立因变量均值是否存在显著差异,即检验单因素各个水平的值…

锂电池SOH估计 | Matlab实现基于ALO-SVR模型的锂电池SOH估计

目录 预测效果基本介绍程序设计参考资料 预测效果 基本介绍 锂电池SOH估计 | Matlab实现基于ALO-SVR模型的锂电池SOH估计 蚁狮优化支持向量机锂电池健康状态SOH估计; 具体流程如下; 1、分析锂离子电池老化数据集,从中选取具有代表电池性能衰减…

dumpsys meminfo 流程中细节

源码基于:Android U 参考: dumpsys meminfo 详解(R) dumpsys meminfo 详解(U) 1. 命令入口 MemBinder frameworks/base/services/core/java/com/android/server/am/AMS.javastatic class MemBinder extends Binder {ActivityManagerService mActivity…

vue实现复制功能详解(使用v-clipboard)

目录 1 前言2 使用2.1 安装2.2 使用2.2.1复制静态的值2.2.2复制动态的变量2.2.3 在方法中使用2.2.4 复制成功失败事件 1 前言 v-clipboard 是一个与 Vue.js 相关的指令或功能,它通常与剪贴板操作结合使用。在 Vue.js 中,v-clipboard 可以用于将文本或其…

python 中如何匹配字符串

python 中如何匹配字符串? 1. re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none。 import re line"this hdr-biz 123 model server 456" patternr"123" matchObj re.matc…

一键安装Halo DB

说明 这里说的一键其实分了好几步,是我将安装步骤分解。你可以把它们放在一个shell中或者串起来就是一键了。 易景科技的数据库 羲和 (Halo DB) 我之前的一位朋友(章晨曦)创立的数据库公司。以前看他朋友圈说他做数…

私域流量引流方式有哪些?

私域流量引流的方法无非是营销渠道投放、各平台KOL投放、自有自媒体平台账号内容引流、线下引流、老客户转介绍裂变等几个方面,下面对各种不同方法进行简单介绍。 1、营销渠道投放:选择广点通、粉丝通、某些app的信息流和dou等大平台自带的推广渠道工具…

音频文件分析-- whisper(python 文档解析提取)

使用whisper转文本,这里使用的是large-v3版本 pip install githttps://github.com/openai/whisper.git import whisper import os from tqdm import tqdmmodel whisper.load_model("large-v3")path "rag_data" for fi in tqdm(os.listdir(pa…

npy文件如何追加数据?

.npy 文件是 NumPy 库用于存储数组数据的二进制格式,它包含一个描述数组结构的头部信息和实际的数据部分。直接追加数据到现有的 .npy 文件并不像文本文件那样直接,因为需要手动修改文件头部以反映新增数据后的数组尺寸,并且要确保数据正确地…

创新指南|非凡时代的变革型领导力——五个领导力差异化优势将使高管能够重塑他们的组织

大多数商界领袖现在都明白,我们正在经历一场“伟大的重构”,整个行业、经济和社会都在重塑的时期。然而,考虑到他们面临的短期压力,很少有高管发现自己能够真正应对这些变化,这些变化对他们的组织所需的转型意味着什么…

智能BI产品设计

BI概念 目录 BI概念 一:与BI相关的几个重要概念 二:数据仓库 VS 数据库 BI架构 一:数据分析通用流程 二:BI平台基本架构 可视化图形 一:如何选择可视化图形 二:数据展示形式 三:数据…

JAVA学习14——异常

目录 异常: 1.异常基本介绍: 2.异常体系图: 3.五大运行时异常: (1)NullPointerException空指针异常: (2)AirthmetiException数字运算异常: &#xff0…

javaweb学习week7

javaweb学习 十四.Springboot 1.配置优先级 Springboot中支持三种格式的配置文件: 注意:虽然Springboot支持多种格式配置文件,但是在项目开发时,推荐使用一种格式的配置(yml是主流) Springboot除了支持…

报道|2024 INFORMS TSL-美团数据驱动研究竞赛

编者按 首届INFORMS 交通科学与物流(Transportation Science & Logistics,TSL)数据驱动研究竞赛与美团联合举行。 在第一届INFORMS TSL数据驱动研究挑战中,TSL和美团合作为全球研究人员和从业人员提供对美团运营级别的外卖配送…

C++:反向迭代器reverse_iterator

反向迭代器是C STL(标准模板库)中的一种迭代器类型,它允许我们逆向遍历容器(如std::vector, std::list, std::deque等)中的元素。反向迭代器指向容器的“尾部”元素,并通过递减操作向前移动(即向…

Vscode 总是发现不到包package

Vscode 右下角,选择3.8.6就不再报错,其他最新版本的3.11.7就不行。

【设计模式】创建者模式之 工厂方法 抽象工厂

工厂方法模式(Factory Method) 一个特定功能,往往有多种实现方式,但是很难有某一个实现可以适用于所有情况,因此往往需要根据特定的场景选择不同的实现。试想:把选择具体实现的代码放在业务中会发生什么?每当我们需要…

C++中lambda表达式的使用及注意事项

在C中一共有四种可调用对象,分别是函数,函数指针,仿函数,和lambda表达式,本文将从lambda表达式的定义形式开始,到lambda表达式的使用场景,向你讲述lambda的使用及注意事项。 lambda表达式的定义…

Java中的ThreadLocal为什么使用弱引用

ThreadLocal中为什么使用弱引用 补个概念: ThreadLocalMap中的key就是Entry,Entry是一个弱引用,关联了当前ThreadLocal对象。需要存储的数据为值。调用set方法要传入两个参数ThreadLocal对象和要存入ThreadLocal对象的数据。 如下图&#xf…

详细分析Java中的@AllArgsConstructor注解

目录 前言1. 基本知识2. 实战 前言 事情起因是Spring的循环依赖 详情可见:出现The dependencies of some of the beans in the application context form a cycle 解决方法(全) 1. 基本知识 AllArgsConstructor 是 Lombok 提供的一个注解…