首页 > 编程语言 >JavaScript中Array.from()方法的用法

JavaScript中Array.from()方法的用法

时间:2022-11-01 01:55:43浏览次数:39  
标签:arr console log JavaScript 用法 let 数组 Array

1. 介绍

作用:将一个伪数组对象或者可迭代的任意对象转换为一个真正的数组

语法: Array.from(arrayLike [, mapFunction [, thisArg]])

  • arrayLike:必传参数,指定需要转换为数组的伪数组对象或任意可迭代的对象
  • mapFunction:可选参数,mapFunction( item, index ){} 是在集合中的每个项目上调用的方法,返回的值插入到新集合中
  • thisArg: 可选参数,执行回调函数 mapFunction 时的 this 对象,很少用

2. 将伪数组转换为真正的数组

2.1 DOM 集合

// 最常见的伪数组就是 DOM 集合
let lis = document.querySelectorAll('ul > li')
let newLis = Array.from(lis)
console.log(newLis);

2.2 函数中的 arguments 关键字

function sum() {
    // reduce() 方法接收的两个参数分别代表的是上一次返回的值,和这一次遍历的值
    let arr = Array.from(arguments).reduce((x, y) => x + y)
    console.log(arr)
    // 6
}
sum(1, 2, 3)

2.3. 将字符串转换为数组

let str = 'JavaScript'
let arr = Array.from(str)
console.log(arr)
// ['J', 'a', 'v', 'a', 'S', 'c', 'r', 'i', 'p', 't']

2.4 带有 length 的对象

let obj = {
    0: '张三',
    1: 59,
    2: '男',
    length: 3,
}

console.log(obj)
// { '0': '张三', '1': 59, '2': '男', length: 3 }

let arr = Array.from(obj)
console.log(arr)
// [ '张三', 59, '男' ]

/***  如果将上面代码中的 length 去掉,返回的就是一个长度为 0 的空数组  ***/

将上面的代码再次进行改进:将对象中的 key 修改为 字符串类型

let obj = {
    '0': '张三',
    'age': 59,
    'sex': '男',
    length: 3,
}

console.log(obj)
// { '0': '张三', age: 59, sex: '男', length: 3 }

let arr = Array.from(obj)
console.log(arr)
// [ '张三', undefined, undefined ]

虽然可以返回数组,但是除了字符串类型的数值,其他的字符串均被识别为了 undefined

由此可见,要将一个伪数组转换为一个真正的数组,需要满足以下两个条件:

  1. 伪数组必须携带 length 属性,用于指定数组的长度。如果没有,转换出来的就是一个空数组
  2. 伪数组对象的属性值必须是数值型或者字符串类型的数值

3. 数组去重

// 原理:利用 set 集合会去除重复项的能力
let arr = [1, 2, 3, 1]
let set = new Set(arr)
console.log(set)
// Set(3) { 1, 2, 3 }

let newArr = Array.from(set)
console.log(newArr)
// [ 1, 2, 3 ]

// 打包成函数
function unique(arr) {
    return Array.from(new Set(arr))
}
console.log(unique([1, 1, 2, 3, 3]))
// [ 1, 2, 3 ]

4. Array.from() 方法的第二项参数

第二项参数为一个函数,会在每个元素上进行调用,返回的值插入到新集合中。

let arr = [10, 22, 30]
let newArr = Array.from(arr, (item) => item * 2)
console.log(newArr)
// [ 20, 44, 60 ]

// 类似于 map() 方法
let newArr2 = arr.map((item) => item * 2)
console.log(newArr2);
// [ 20, 44, 60 ]

标签:arr,console,log,JavaScript,用法,let,数组,Array
From: https://www.cnblogs.com/bkzj/p/16846460.html

相关文章

  • JavaScript快速入门
    JavaScript快速入门1.前端知识体系  想要成为真正的“互联网Java全栈工程师”还有很长的一段路要走,其中前端是绕不开的一门必修课。本阶段课程的主要目的就是带领Ja......
  • QJsonObject与(QByteArray、QString)互相转换
    QJsonObjectCbActionSyncManager::getJsonObjectFromByteArray(constQByteArrayjsonString){QJsonDocumentjsonDocument=QJsonDocument::fromJson(jsonString);......
  • JavaScript 输出
    JavaScript没有任何打印或者输出的函数。JavaScript显示数据JavaScript可以通过不同的方式来输出数据:使用window.alert()弹出警告框。使用document.write()方法将......
  • C#中的is和as的用法
    is运算符is在C#7.0之前,主要用于检验实例是否是指定的类型,格式:expristypeexpr是一个具有值的表达式,type是一个类型。从C#7.0开始,is表达式......
  • C#的switch的用法
    switch-case语句经常被认为是if-else语句的替代品,但是在众多程序语言中还是能见到switch的存在,这很大程度上是因为switch更实用,这一点在C#中更能提现。简单的语法......
  • C语言中使用 #pragma pack 和 __attribute(aligned(n)) 【非常有用的字节对齐用法说明
    更改c编译器的缺省字节对齐方式:在缺省情况下,c编译器为每一个变量或数据单元按其自然对界条件分配空间;一般地可以通过下面的两种方法来改变缺省的对界条件:方法一(体积对齐):......
  • javascript日期处理函数的一些问题
    问题1:newDate(字符串)产生的日期对象,在某些情形下,可能会自动增加1天。猜测是和时区有关,浏览器没有默认当前时区?这是一个坑。问题2:setDate()设置日期后不准确的问题。比如......
  • python中*的用法
    python中*是非常常见的一个运算符,它主要有以下几个功能:乘法运算符;函数形参表示可变参数;函数实参代表tuple;序列解包为tuple;zip解包运算;参考资料:​​Python3*和**运算符​......
  • python多继承及其super的用法
    python也具有多继承的功能,而同样的,大家能想到多继承必须要引入一些特定的方法来准确调用子类或基类的重载、重写的方法,否则会出现混乱。本文参考​​Multipleinheritance......
  • 大一学生《Web编程基础》期末网页制作 HTML+CSS+JavaScript 网页设计实例 企业网站制
    HTML实例网页代码,本实例适合于初学HTML的同学。该实例里面有设置了css的样式设置,有div的样式格局,这个实例比较全面,有助于同学的学习,本文将介绍如何通过从头开始设计个人......