Javascript数组及类数组相关原理详解

yizhihongxing

Javascript数组及类数组相关原理详解

在Javascript中数组是一个非常重要的数据结构,它可以存储多个数据并进行操作。但是在实际开发中,我们还会遇到类数组对象,这些对象类似于数组但并不是数组,本文将详细介绍Javascript数组及类数组相关原理。

数组基本操作

定义数组

定义数组有两种方式,一种是通过字面量方式,另一种是通过构造函数方式。

// 字面量方式
const arr1 = [1, 2, 3];

// 构造函数方式
const arr2 = new Array(1, 2, 3);

获取数组长度

通过length属性可以获取数组的长度。

const arr = [1, 2, 3];
console.log(arr.length); // 输出:3

访问数组元素

通过下标可以访问数组中的元素。

const arr = [1, 2, 3];
console.log(arr[0]); // 输出:1

迭代数组

可以通过for循环、forEach等方法对数组进行迭代。

const arr = [1, 2, 3];
for(let i = 0; i < arr.length; i++) {
  console.log(arr[i]);
}

类数组对象

类数组对象是一个包含length属性和一些数字类型属性的对象,它们看起来类似于数组,但并不是真正的数组对象。以下是一些常见的类数组对象。

arguments对象

在调用函数时,会自动生成arguments对象,这个对象就是一个类数组对象。

function test() {
  console.log(arguments);
}

test(1, 2, 3); 
// 输出: {
//  "0": 1,
//  "1": 2,
//  "2": 3,
//  "length": 3
//}

NodeList对象

NodeList对象是一个包含一组节点的类数组对象,常用于DOM操作。

<ul id="list">
  <li>item1</li>
  <li>item2</li>
  <li>item3</li>
</ul>

<script>
  const list = document.querySelectorAll('li');
  console.log(list); // 输出: NodeList(3) [li, li, li]
</script>

自定义类数组对象

我们也可以自己创建一个类数组对象。

const obj = {
  0: 1,
  1: 2,
  2: 3,
  length: 3
};

类数组转数组

类数组对象不能使用数组的方法,但我们可以通过Array.from、Array.prototype.slice.call等方法将类数组转为数组。

Array.from

Array.from方法可以将类数组对象转为数组。

const obj = {
  0: 1,
  1: 2,
  2: 3,
  length: 3
};

const arr = Array.from(obj);
console.log(arr); // 输出: [1, 2, 3]

Array.prototype.slice.call

Array.prototype.slice.call方法可以将类数组对象转为数组。

function test() {
  const arr = Array.prototype.slice.call(arguments);
  console.log(arr);
}

test(1, 2, 3); // 输出: [1, 2, 3]

示例说明

示例一:计算变量参数的总和

function sum() {
  let result = 0;
  Array.prototype.forEach.call(arguments, item => {
    result += item;
  });
  return result;
}

console.log(sum(1, 2, 3, 4)); // 输出: 10

在上面的例子中,我们通过Array.prototype.forEach方法迭代arguments对象,并进行求和操作。

示例二:类数组转数组

const nodeList = document.querySelectorAll('li');
const arr = Array.from(nodeList);
console.log(arr); // 输出: [li, li, li]

在上面的例子中,我们通过Array.from方法将NodeList转为数组。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Javascript数组及类数组相关原理详解 - Python技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • Javascript Dom元素获取和添加详解

    关于JavaScript中Dom元素获取和添加,可以分为如下几个方面进行讲解: 一、Dom元素获取 Dom元素是页面上的元素,我们可以通过JavaScript代码获取到Dom元素以便进行操作,下面介绍一些常用的Dom元素获取方式: 1. document.getElementById 这是获取单个元素最常用的方法,通过元素id获取单个Dom元素: var e…

    JavaScript 2023年6月10日
    00
  • javascript中的location用法简单介绍

    当浏览器加载一张网页时,它会解析代码和标记,然后将结果显示在用户的浏览器窗口中。window.location 对象提供了当前文档的有关信息,包括它的URL和一些方法可以用来向这个URL位置进行解读和导航。 URL属性 window.location 对象最有用的属性可能是 href。它是一个字符串,表示当前文档的URL的完整路径。如果你想获取当前文档的UR…

    JavaScript 2023年6月11日
    00
  • url 编码 js url传参中文乱码解决方案

    关于“url 编码 js url传参中文乱码解决方案”的完整攻略,我可以提供以下内容: 什么是 URL 编码? URL 编码(URL encoding)是对 URL 中非 ASCII 字符和特殊字符进行编码的过程,其中使用了一种编码规则。URL 编码可以确保 URL 中的所有字符在传输过程中都是安全的、可靠的。URL 编码规则如下: 对于 ASCII 字符中…

    JavaScript 2023年5月19日
    00
  • Vue+Element实现动态生成新表单并添加验证功能

    下面我将为您介绍实现“Vue+Element实现动态生成新表单并添加验证功能”的完整攻略。具体步骤如下: 第一步:引入ElementUI和Vue.js 我们需要先在HTML文件中引入ElementUI和Vue.js,可以通过CDN来引入: <!– 引入Vue.js –> <script src="https://cdn.jsd…

    JavaScript 2023年6月10日
    00
  • JavaScript(JS) 压缩 / 混淆 / 格式化 批处理工具

    作为一个网站作者,可使用以下步骤进行JavaScript(JS)压缩/混淆/格式化批处理,以加强效率和文件安全性。 第一步:安装Node.js Node.js是一个基于Chrome JavaScript运行时建立的平台,可运行在多个操作系统上,并具有事件驱动、非阻塞I/O的特点。我们需要使用Node.js环境运行JS压缩/混淆/格式化工具。 在官网下载地址中…

    JavaScript 2023年5月19日
    00
  • 2014值得推荐的10个移动 Web 应用程序开发框架

    2014值得推荐的10个移动 Web 应用程序开发框架 移动 Web 应用程序开发框架是一种用于开发移动应用程序,特别是移动 Web 应用程序的工具集。移动 Web 应用程序开发框架通常包括编程语言、工具和库等资源。在2014年,有很多值得推荐的移动 Web 应用程序开发框架。在这里,我们将介绍其中的10个框架和如何使用它们来开发移动 Web 应用程序。 1…

    JavaScript 2023年5月19日
    00
  • JS表单提交验证、input(type=number) 去三角 刷新验证码

    下面我将为你详细讲解“JS表单提交验证、input(type=number) 去三角 刷新验证码”的完整攻略。 JS表单提交验证 表单提交验证一般用于验证用户在表单中输入的数据是否符合要求。下面,我将为你介绍如何使用JS实现表单提交验证。 监听表单提交事件,在表单提交时执行验证函数。 document.getElementById("form&qu…

    JavaScript 2023年6月10日
    00
  • javascript的函数

    JavaScript的函数 什么是函数 在JavaScript中,函数是可调用的代码块,它们可以接受输入(通过参数)并生成输出(通过返回值)。 JavaScript中的函数包括内置函数和自定义函数。内置函数是由JavaScript提供的函数库,如console.log,而自定义函数是由程序员创建的函数。 声明一个函数 在JavaScript中,函数可以通过函…

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