JS从非数组对象转数组的方法小结

yizhihongxing

以下是详细讲解“JS从非数组对象转数组的方法小结”的完整攻略。

问题背景

在 JavaScript 开发中,我们常常需要将一个非数组对象转成数组,以便进行遍历、排序等操作。此时,我们可以使用多种方法将非数组对象转成数组。

方法一:Array.from()

ES6 提供了 Array.from() 方法,可以将类数组对象或可遍历对象转成真正的数组。该方法的语法格式如下:

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

其中,arrayLike 表示要转换的类数组对象或可遍历对象;mapFn 表示可选参数,是一个回调函数,用于对每个元素进行处理;thisArg 表示可选参数,是执行 mapFn 时 this 指向的对象。

例如,我们要将一个类数组对象转成数组,可以使用 Array.from() 方法:

const obj = {
  0: "a",
  1: "b",
  2: "c",
  length: 3
};
const arr = Array.from(obj); // ["a", "b", "c"]

在上面的示例中,我们将一个对象 obj 类比成一个数组,该对象有三个属性,分别是 0、1、2,以及一个 length 属性,表示数组的长度。然后我们使用 Array.from() 方法将该对象转成数组 arr,返回结果为 ["a", "b", "c"]。

方法二:Array.prototype.slice.call()

我们还可以使用 Array.prototype.slice.call() 方法将一个类数组对象转成真正的数组。该方法的语法格式如下:

Array.prototype.slice.call(arrayLike[, begin[, end]])

其中,arrayLike 表示要转换的类数组对象;begin 表示从哪里开始抽取,可选参数,默认值为 0;end 表示从哪里结束抽取,可选参数,默认值为 arrayLike.length。

例如,我们要将一个类数组对象转成数组,可以使用 Array.prototype.slice.call() 方法:

const obj = {
  0: "a",
  1: "b",
  2: "c",
  length: 3
};
const arr = Array.prototype.slice.call(obj); // ["a", "b", "c"]

在上面的示例中,我们将一个对象 obj 类比成一个数组,该对象有三个属性,分别是 0、1、2,以及一个 length 属性,表示数组的长度。然后我们使用 Array.prototype.slice.call() 方法将该对象转成数组 arr,返回结果为 ["a", "b", "c"]。

总结

以上就是两种将非数组对象转成真正数组的方法,使用时可以根据实际需要选择合适的方法。

上述两种方法的执行效率没有太大差异,但推荐使用 Array.from() 方法,因为该方法更为简洁明了。在兼容性方面,Array.prototype.slice.call() 方法的兼容性更好些,而 Array.from() 方法需要考虑兼容性问题。

希望这篇文章能对你有所帮助!

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JS从非数组对象转数组的方法小结 - Python技术站

(0)
上一篇 2023年6月25日
下一篇 2023年6月25日

相关文章

  • vue如何使用rem适配

    使用rem适配是多种移动端页面适配方案中比较常用的一种。下面我将详细讲解在Vue中如何使用rem适配的完整攻略。 步骤一:配置viewport 在html文件头部添加如下代码: <meta name="viewport" content="width=device-width, initial-scale=1, maxim…

    other 2023年6月27日
    00
  • 在安装完android程序以后“你的手机上未安装应用程序”的解决方案

    让我为你详细讲解如何解决“在安装完Android程序以后‘你的手机上未安装应用程序’”的问题。 问题描述 当你在手机上安装一个Android程序后,有时候你会发现你的手机上并没有安装该应用程序,而且也没有任何报错信息。这可能是由于Android系统的一些缓存问题导致的。 解决方案 以下是解决问题的完整攻略: 1. 清除Google Play Store的缓存…

    other 2023年6月25日
    00
  • 详解C语言之函数

    详解C语言之函数 函数是C语言最为重要的一个知识点,也是C程序设计中必不可少的一部分。本文将详细解析C语言中函数的概念、定义、声明、参数、返回值、类型和作用域等方面,希望能对初学者们有所帮助。 函数的概念 函数是C语言中一段能够完成特定任务的代码,独立于程序的主体,能够被多次调用。在C语言中,函数是程序中的模块化单元,能够将程序中的代码分为不同的模块,以便于…

    other 2023年6月27日
    00
  • 如何批量重命名文件名 一个F2即可全部搞定

    如何批量重命名文件名 如果你要批量重命名文件名,Windows操作系统提供了一个快速的方法来完成这项任务。你只需要按下F2键,然后修改第一个文件名,其余的文件名将按照递增数字进行改变。以下是详细步骤: 选中您要重命名的文件,可以使用鼠标或键盘来多选文件。 按下F2键,此时文件名处于编辑模式。 修改第一个文件名为您需要的名称,然后按下回车键。 系统将自动为您重…

    other 2023年6月26日
    00
  • Phpstudy2018 集成环境配置虚拟域名访问到Index Of 下

    Phpstudy2018 集成环境配置虚拟域名访问到Index Of 下 介绍 PHPStudy是一个Windows环境下的PHP开发环境。它包含了最新的PHP和MySQL,可以满足开发者的需求。在这篇文章中,我们将介绍如何使用PHPStudy2018配置虚拟域名,以便在本地环境下访问到Index Of。 配置虚拟域名 找到PHPStudy2018的安装目录…

    其他 2023年3月28日
    00
  • 最终幻想14百度帐号5003错误解决方法介绍

    最终幻想14百度帐号5003错误解决方法介绍 最终幻想14玩家在使用百度帐号登录游戏中可能会遇到5003错误,这通常是由于网络连接问题或者账户异常造成的,下面我们将介绍如何解决此问题。 方法1:重启网络设备和电脑 此问题通常由于网络连接问题引起,您可以试着重启您的网络设备和电脑。 示例: 拔掉您的路由器和电脑的电源线。 等待10秒钟,重新插上电源线,然后等待…

    other 2023年6月27日
    00
  • Flash中this构造函数不能表示参数的含义该怎么办?

    Flash中this构造函数不能表示参数的含义该怎么办? 在Flash中,this关键字在构造函数中表示当前实例化的对象。然而,this关键字无法直接表示构造函数的参数。为了解决这个问题,可以使用其他变量名来表示构造函数的参数。以下是解决方法的详细攻略: 使用其他变量名来表示构造函数的参数。例如,可以使用param或arg等变量名来表示构造函数的参数。示例代…

    other 2023年10月13日
    00
  • Netty分布式高性能工具类recycler的使用及创建

    以下是使用标准的Markdown格式文本,详细讲解Netty分布式高性能工具类recycler的使用及创建的完整攻略: Netty分布式高性能工具类recycler的使用及创建 1. 什么是Netty的Recycler? Netty的Recycler是一个用于对象池管理的工具类,用于高效地重用对象,减少对象的创建和销毁开销。它通过使用线程本地变量(Threa…

    other 2023年10月15日
    00
合作推广
合作推广
分享本页
返回顶部