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

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日

相关文章

  • js中的cookie的读写操作示例详解

    有关 JavaScript 中的 Cookie 读写操作,通常需要通过 document.cookie 属性进行实现。下面是关于如何读写 Cookie 的示例及详细攻略。 读取 Cookie 值 通过 document.cookie 属性可以访问 Cookie 值。Cookie 格式通常为 name=value,使用分号(;)将多个 Cookie 分隔开,每…

    JavaScript 2023年6月10日
    00
  • JavaScript实现简单计时器

    当需要实现一个简单的计时器时,我们可以使用JavaScript来实现。下面是实现一个简单计时器的步骤和代码示例: 步骤一:创建HTML文件 首先,我们需要创建一个HTML文件,其中包含一个计时器及其按钮。代码如下: <!DOCTYPE html> <html> <head> <title>JavaScript计…

    JavaScript 2023年5月27日
    00
  • JS TextArea字符串长度限制代码集合

    下面我来详细讲解一下“JS TextArea字符串长度限制代码集合”的完整攻略。 什么是JS TextArea字符串长度限制? JS TextArea字符串长度限制是指在想要限制前端页面中Textarea文本框输入的字符串长度时,可以借助JavaScript技术来实现。对于需要用户输入一些较为固定信息,比如名字、邮箱等,限制字符串长度能够保证用户输入的数据格…

    JavaScript 2023年6月11日
    00
  • javascript的数组和常用函数详解

    下面我将为大家详细讲解“JavaScript的数组和常用函数”: JavaScript数组基础知识 JavaScript数组是一种可以存储多个值的变量类型,可以存储数字、字符串、布尔值等等各种类型的值。数组是由一个方括号围成的有序列表,在方括号中每个元素之间用逗号分隔。 例如,下面是一个由数字组成的数组: let myArray = [1, 2, 3, 4,…

    JavaScript 2023年5月27日
    00
  • js显示时间 js显示最后修改时间

    下面是关于“js显示时间 js显示最后修改时间”的详细讲解及示例: 一、JS显示时间 1. 在HTML页面上显示当前时间 我们可以使用以下JavaScript代码来在HTML页面上显示当前时间: <p id="time"></p> <script> var now = new Date(); var h…

    JavaScript 2023年5月27日
    00
  • 浅谈JavaScript暂时性死区与垃圾回收机制

    浅谈JavaScript暂时性死区与垃圾回收机制 什么是暂时性死区 暂时性死区(Temporal Dead Zone,TDZ)指在代码块中,在声明变量前使用该变量会造成ReferenceError的行为。 具体来说,在ES6之前,声明变量的方式有var和函数声明(function declaration),它们没有块级作用域,而是函数级作用域。 在以下代码中…

    JavaScript 2023年5月28日
    00
  • JS实现支持Ajax验证的表单插件

    下面是“JS实现支持Ajax验证的表单插件”的完整攻略。 目录 简介 实现步骤 第一步:引入jQuery库 第二步:创建表单 第三步:定义验证规则 第四步:编写Ajax请求 第五步:表单提交事件 示例说明 示例1:验证用户名是否已存在 示例2:验证邮箱格式是否正确 简介 本攻略将要讲解如何使用JavaScript实现支持Ajax验证的表单插件。Ajax验证是…

    JavaScript 2023年6月10日
    00
  • nuxt中使用路由守卫的方法步骤

    下面是详细讲解”nuxt中使用路由守卫的方法步骤”的完整攻略。 什么是路由守卫? 路由守卫是用来监听路由跳转的钩子函数,我们可以在路由跳转过程中对路由做出一些拦截或者其他操作,比如登录校验、数据埋点等。 Nuxt中使用路由守卫的方法步骤 1. 在 nuxt.config.js 中配置路由 要使用路由守卫,必须先在 nuxt.config.js 中配置好路由,…

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