Array.from()的6种常见用法

Array.from()是一个用于从类数组对象可迭代对象创建新数组的静态方法。
基本语法:

Array.from(arrayLike[, mapFunction[, thisArg]])

arrayLike: 类数组对象或可迭代对象,用于创建新数组
mapFunction (可选): 对数组中的每个元素进行映射的函数
thisArg (可选): 执行 mapFunction 时,用作 this 的值。

1. 字符串转数组

const str = 'hello';
const newArray = Array.from(str);
console.log(newArray); // ['h', 'e', 'l', 'l', 'o']
// 相当于 str.split('')

2. 用Set 或 Map创建数组

const set = new Set([1, 2, 3]);
const newArray = Array.from(set);
console.log(newArray); // [1, 2, 3]

3. 对元素进行迭代处理

const numbers = [1, 2, 3];
const squaredNumbers = Array.from(numbers, x => x * x);
console.log(squaredNumbers); // [1, 4, 9]
const str = 'hello'const strArr = Array.from(str,(s) =>s+'_')
console.log(strArr);//["h_", "e_", "l_", "l_", "o_"]
console.log(strArr.join(''));// "h_e_l_l_o_"

4. 类数组对象转成真正的数组

什么是类数组对象?

const arrayLike = { 0: 'a', 1: 'b', 2: 'c', length: 3 };
const newArray = Array.from(arrayLike);
console.log(newArray); // ['a', 'b', 'c']
    function exampleFn() {console.log(arguments); // { 0: 1, 1: 2, 2: "a" ,length:3,...} 类数组对象console.log(Array.from(arguments))//[1, 2, "a"] 真正的数组console.log([...arguments])//[1, 2, "a"]}exampleFn(1, 2, 'a')

5. 数组、字符串的去重

    const arr = [1, 2, 2, 3, 4, 4, 5];const uniqueArray = Array.from(new Set(arr));const uniqueArray2 =[...new Set(arr)]const uniqueArray3 = _.uniq(arr)// 使用lodash中的方法console.log(uniqueArray); // [1, 2, 3, 4, 5]console.log(uniqueArray2); // [1, 2, 3, 4, 5]console.log(uniqueArray3); // [1, 2, 3, 4, 5]

6. 创建指定长度的数组

	// 数组里创建3个空数组const newArr = Array.from({length:3},() =>[])console.log(newArr)//[[],[],[]]const newArr2 = Array.from({ length:5}, (_, index) => index + 1);console.log(newArr2); // [1, 2, 3, 4, 5]// 数组里创建3个空对象const newArr = Array.from({length:3},() =>({})console.log(newArr)//[{},{},{}]

注意

const arr = Array.from({length: 5}, () => {})
console.log(arr);//[undefined, undefined, undefined, undefined, undefined]

映射函数 () => {} 不会改变数组的元素的实际值,因为它返回的是一个空函数。因此,使用 Array.from 时,每个元素都会被映射为 undefined。
而映射函数 () => ({}) 返回一个新的空对象。每次映射函数调用时,都会返回一个新的对象,因此每个数组元素都将包含一个新的空对象。

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

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

相关文章

repo常用命令解析(持续更新)

1 同步 1.1 将本地仓库更新到最新状态。它会从远程服务器下载最新的代码,并将本地仓库与之同步。如果本地仓库中已经存在某个项目,repo sync会自动检测本地仓库中该项目的版本,并将其更新到最新状态。 类似于git fetch和git merge命令组合使…

算法题-统计字符个数(Python题解)

文章目录 前言思路code 前言 先前笔试做了一道算法题,题目是这样子的:(PS:不用惊讶,是的,我不打算24今年考研了,一是,当初填报的学校不是我想要去的学校(当初想一战成硕…

【HuggingFace Transformer库学习笔记】基础组件学习:Tokenizer

基础组件——Tokenizer (1)模型加载 from transformers import AutoTokenizersen "弱小的我也有大梦想!" # 从HuggingFace加载,输入模型名称,即可加载对于的分词器 tokenizer AutoTokenizer.from_pretrained("m…

华为电视盒子 EC6108V9C 刷机成linux系统

场景: 提示:这里简述项目相关背景: 家里装宽带的时候会自带电视盒子,但是由于某些原因电视盒子没有用,于是就只能摆在那里吃土,闲来无事,搞一下 问题描述 提示:这里描述项目中遇到…

【数据结构和算法】找出叠涂元素

其他系列文章导航 Java基础合集数据结构与算法合集 设计模式合集 多线程合集 分布式合集 ES合集 文章目录 其他系列文章导航 文章目录 前言 一、题目描述 二、题解 三、代码 四、复杂度分析 前言 这是力扣的2661题,难度为中等,解题方案有很多种&…

Linux 系统是如何收发网络包的?(计算机网络)

一、Linux 网络协议栈 如下是TCP/IP四层网络模型,实际上Linux 网络协议栈与它相似 下图是Linux 网络协议栈 二、Linux 接收网络包的流程 1.网卡是计算机里的一个硬件,专门负责接收和发送网络包,当网卡接收到一个网络包后,会通过…

15、 深度学习之正向传播和反向传播

上一节介绍了训练和推理的概念,这一节接着训练和推理的概念讲一下,神经网络的正向传播和反向传播。 其实单看正向传播和反向传播这两个概念,很好理解。 正向传播(Forward Propagation)是指从输入层到输出层的数据流动过程,而反向传播(Backpropagation)是指数据从输出…

国际语音群呼系统

随着海外电话营销的发展,越来越多的出海企业通过国际语音群呼系统打开出海营销之路。企业出海营销运营,选择一个安全、高效、便捷的国际语音群呼系统非常重要。 一、什么是国际语音群呼系统? 国际语音群呼是指通过语音的方式批量向海外用户传…

如何使用 NFTScan NFT API 在 Starknet 网络上开发 Web3 应用

Starknet 是由以色列软件公司 StarkWare 开发的免许可的第 2 层网络。Starknet 作为以太坊上的 ZK Rollup 运行,帮助 dApp 使用 STARK 证明以更低的交易成本实现更大的计算规模。该网络允许智能合约与区块链上部署的其他合约进行交互,从而提高协议之间的…

drawio画图工具的四种使用方式

1、免安装使用(绿色版) 这种直接下载下来直接就可以使用,属于绿色版(开箱即用),适用于个人 点击下载地址 2、 安装使用 这种下载下来就需要安装才可使用,适用于个人 点击下载地址 3、war包…

用100ask 6ull配合 飞凌 elf1的教程进行学习的记录

启动方式 百问网 elf1: 固件 emmc-otg 串口 网络 改eth0, 网线接在右边的网口eth2上

anaconda安装介绍

苹果驻车:https://appleid.apple.com 身份生成:Random Identity Generator | Random Person Generator Anaconda安装介绍 Anaconda是一个免费的开源Python和R语言的发行版本,用于计算科学(数据科学、机器学习、大数据处理和预测…

【高效开发工具系列】驼峰下划线互转

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

大数据技术之Oozie

大数据技术之Oozie 第1章 Oozie简介 Oozie英文翻译为:驯象人。一个基于工作流引擎的开源框架,由Cloudera公司贡献给Apache,提供对Hadoop MapReduce、Pig Jobs的任务调度与协调。Oozie需要部署到Java Servlet容器中运行。主要用于定时调度任…

NSDT场景编辑器实现真数字孪生

在线工具推荐: 三维数字孪生场景工具 - GLTF/GLB在线编辑器 - Three.js AI自动纹理化开发 - YOLO 虚幻合成数据生成器 - 3D模型在线转换 - 3D模型预览图生成服务 1、什么是数字孪生? 数字孪生是资产或系统的实时虚拟模型,它使用来自连…

spring boot 整合 spring security

项目结构 添加依赖 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.3.9.RELEASE</version><relativePath/></parent><dependency><grou…

UiPath:人工智能和重新加速增长是 2024 年的好兆头

UiPath&#xff08;NYSE&#xff1a;PATH&#xff09;重新加速增长&#xff0c;同时在销售和营销方面变得最高效&#xff0c;使其成为进入 2024 年的有吸引力的成长型股票。 UiPath 最初被归类为机器人流程自动化 (RPA) 公司&#xff0c;现在认为自己是一家人工智能驱动的自动…

OpenSSH(CVE-2023-38408)OpenSsh9.5一键升级

OpenSSH(CVE-2023-38408)OpenSsh9.5一键升级 yum install -y git cd /root git clone https://gitee.com/qqmiller/openssh-9.5p1-.x86_64.git cd openssh-9.5p1-.x86_64/ bash openssh_update.sh重启SSH服务 systemctl restart sshd查看SSH版本信息 sshd -v查看SSH服务状态…

电力信息系统特点及安全防御

背景&#xff1a; 电力信息系统的构建&#xff0c;为居民用电和企业服务提供了帮助&#xff0c;有利于促进电力行业的信息化发展。尤其是在大数据时代&#xff0c;对电力信息系统的运行提出了更高的要求&#xff0c;只有保障其安全性与可靠性&#xff0c;才能防止其对居民用电…

代码随想录算法训练营第24天|● 理论基础 ● 77. 组合

77. 组合 已解答 中等 相关标签 相关企业 给定两个整数 n 和 k&#xff0c;返回范围 [1, n] 中所有可能的 k 个数的组合。 你可以按 任何顺序 返回答案。 示例 1&#xff1a; 输入&#xff1a;n 4, k 2 输出&#xff1a; [ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4], ] 示…