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

以下是详细讲解“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日

相关文章

  • sql将多行数据合并成一行

    当然,我很乐意为您提供有关“SQL将多行数据合并成一行”的完整攻略。以下是详细的步骤和两个示例: 1. SQL将多行数据合并成一行 在SQL中,有多种方法可以将多行数据合并成一行。以下是一些常见的方法: GROUP_CONCAT:将多行数据合并为一个字符串,可以使用分隔符分隔。 LISTAGG:将多行数据合并为一个字符串,可以使用分隔符分隔。 XMLAGG:…

    other 2023年5月6日
    00
  • Android判断当前栈顶Activity的包名代码示例

    当我们需要判断当前栈顶Activity的包名时,可以使用Android的ActivityManager类来实现。下面是一个完整的代码示例: import android.app.ActivityManager; import android.content.ComponentName; import android.content.Context; publ…

    other 2023年9月7日
    00
  • xiv存储操作

    XIV是IBM公司的一种存储设备,提供高性能、高可靠性和高可扩展性的存储解决方案。以下是XIV存储操作的完整攻略,包括以下步骤: 连接XIV存储设备 创建卷 示例1:创建卷 示例2:删除卷 连接XIV存储设备 要连接XIV存储设备,需要使用XIV Graphical User Interface(GUI)。以下是连接XIV存储设备步骤: 打开XIV GUI:…

    other 2023年5月6日
    00
  • Android App获取屏幕旋转角度的方法

    Android App获取屏幕旋转角度的方法攻略 在Android应用程序中,要获取屏幕旋转角度,可以使用以下方法: 方法一:使用OrientationEventListener OrientationEventListener是一个监听设备方向变化的类,可以用来获取屏幕旋转角度。下面是使用OrientationEventListener的示例代码: pub…

    other 2023年8月20日
    00
  • sftp服务器的搭建

    SFTP服务器的搭建 SFTP是基于SSH协议的一种文件传输协议,相较于FTP更加安全可靠。在网站服务器中,搭建一个SFTP服务器,可以方便地进行网站文件的上传和下载。在本文中,我们将介绍如何在Linux系统中搭建SFTP服务器。 1. 安装OpenSSH服务 在Linux系统中,一般都自带OpenSSH服务,如果没有安装的话,可以通过以下命令进行安装: s…

    其他 2023年3月29日
    00
  • 跟我学Makefile(二)

    跟我学Makefile(二)完整攻略 本文将详细讲解Makefile的使用方法和语法规则,包括Makefile的基本概念、Makefile的语法规则、Makefile的使用方法、示例说明等。 Makefile的基本概念 Makefile是一种用于自动化编译程序的工具,它可以根据源文件的依赖关系自动编译程序。Makefile的基本概念包括: 目标:需要生成的文…

    other 2023年5月5日
    00
  • Android中通过MediaStore获取音乐文件信息方法

    以下是使用标准的Markdown格式文本,详细讲解Android中通过MediaStore获取音乐文件信息的完整攻略: Android中通过MediaStore获取音乐文件信息方法 步骤1:添加权限和依赖 在AndroidManifest.xml文件中添加读取外部存储权限: <uses-permission android:name=\"an…

    other 2023年10月14日
    00
  • iOS13.6.1固件下载地址 iOS13.6.1下载

    iOS 13.6.1固件下载地址 iOS 13.6.1下载攻略 如果你想下载iOS 13.6.1固件,你可以按照以下步骤进行操作: 打开Safari浏览器或者你喜欢的其他浏览器。 在地址栏中输入以下网址:https://ipsw.me。 这个网站提供了iOS固件的下载链接和其他相关信息。你可以在搜索框中输入\”iOS 13.6.1\”来查找对应的固件版本。 …

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