广告
返回顶部
首页 > 资讯 > 精选 >JavaScript中伪数组和数组有什么区别
  • 644
分享到

JavaScript中伪数组和数组有什么区别

2023-06-14 23:06:52 644人浏览 薄情痞子
摘要

javascript中伪数组和数组有什么区别?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。JavaScript的作用是什么1、能够嵌入动态文本于html页面。2、对浏览器事件做

javascript中伪数组和数组有什么区别?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

JavaScript的作用是什么

1、能够嵌入动态文本于html页面。2、对浏览器事件做出响应。3、读写HTML元素。4、在数据被提交到服务器之前验证数据。5、检测访客的浏览器信息。6、控制cookies,包括创建和修改等。7、基于node.js技术进行服务器编程

伪数组和数组

在JavaScript中,除了5种原始数据类型之外,其他所有的都是对象,包括函数(Function)。

对象与数组的关系

在说区别之前,需要先提到另外一个知识,就是 JavaScript 的原型继承。

所有 JavaScript 的内置构造函数都是继承自 Object.prototype 。

在这个前提下,可以理解为使用 new Array() 或 [] 创建出来的数组对象,都会拥有 Object.prototype 的属性值。

var obj = {};// 拥有 Object.prototype 的属性值var arr = [];//使用数组直接量创建的数组,由于 Array.prototype 的属性继承自 Object.prototype,//那么,它将同时拥有 Array.prototype 和 Object.prototype 的属性值

可以得到对象和数组的第一个区别:对象没有数组 Array.prototype 的属性值。

什么是数组

数组具有一个最基本特征:索引,这是对象所没有的,下面来看一段代码:

var obj = {};var arr = []; obj[2] = 'a';arr[2] = 'a'; console.log(obj[2]); // => aconsole.log(arr[2]); // => aconsole.log(obj.length); // => undefinedconsole.log(arr.length); // => 3
  • obj[2]输出'a',是因为对象就是普通的键值对存取数据

  • 而arr[2]输出'a' 则不同,数组是通过索引来存取数据,arr[2]之所以输出'a',是因为数组arr索引2的位置已经存储了数据

  • obj.length并不具有数组的特性,并且obj没有保存属性length,那么自然就会输出undefined

  • 而对于数组来说,length是数组的一个内置属性,数组会根据索引长度来更改length的值

  • 为什么arr.length输出3,而不是1

    • 在给数组添加元素时,并没有按照连续的索引添加,所以导致数组的索引不连续,那么就导致索引长度大于元素个数

什么是伪数组

  1. 拥有 length 属性,其它属性(索引)为非负整数(对象中的索引会被当做字符串来处理,这里你可以当做是个非负整数串来理解)

  2. 不具有数组所具有的方法

伪数组,就是像数组一样有 length 属性,也有 0、1、2、3 等属性的对象,看起来就像数组一样,但不是数组,比如:

var fakeArray = {  "0": "first",  "1": "second",  "2": "third",  length: 3}; for (var i = 0; i < fakeArray.length; i++) {  console.log(fakeArray[i]);} Array.prototype.join.call(fakeArray,'+');

常见的伪数组有:

  • 函数内部的 arguments

  • DOM 对象列表(比如通过 document.getElementsByTags 得到的列表)

  • Jquery 对象(比如 $("div") )

伪数组是一个 Object,而真实的数组是一个 Array。

伪数组存在的意义,是可以让普通的对象也能正常使用数组的很多方法,比如:

var arr = Array.prototype.slice.call(arguments); Array.prototype.forEach.call(arguments, function(v) {  // 循环arguments对象});// push// some// every// filter// map// ...

以上在借用数组的原型方法的时候都可以通过数组直接量来简化使用:

var obj = {  0: 'a',  1: 'b',  2: 'c',  length: 3};[].push.call(obj, 'd')console.log([].slice.call(obj));[].forEach.call(obj, function (num, index) {  console.log(num)})

二者区别

1.长度:

  • 真数组的长度是可变的

  • 伪数组的长度不可变

方法的使用:

  • 真数组可以使用数组中的方法

  • 伪数组不可以使用数组中的方法

小结

对象没有数组 Array.prototype 的属性值,类型是 Object ,而数组类型是 Array
数组是基于索引的实现, length 会自动更新,而对象是键值对
使用对象可以创建伪数组,伪数组可以正常使用数组的大部分方法

看完上述内容,你们掌握JavaScript中伪数组和数组有什么区别的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注编程网精选频道,感谢各位的阅读!

--结束END--

本文标题: JavaScript中伪数组和数组有什么区别

本文链接: https://www.lsjlt.com/news/275870.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • JavaScript中伪数组和数组有什么区别
    JavaScript中伪数组和数组有什么区别?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。JavaScript的作用是什么1、能够嵌入动态文本于HTML页面。2、对浏览器事件做...
    99+
    2023-06-14
  • JavaScript伪数组和数组的使用与区别
    伪数组和数组 在JavaScript中,除了5种原始数据类型之外,其他所有的都是对象,包括函数(Function)。 对象与数组的关系 在说区别之前,需要先提到另外一个知识,就是 ...
    99+
    2022-11-12
  • Java数组和JavaScript函数有什么区别?
    Java数组和JavaScript函数是两种不同的编程概念,它们之间存在着很大的区别。在本文中,我们将探讨Java数组和JavaScript函数的区别,并演示一些代码示例。 Java数组是一种存储固定数量元素的数据结构。数组可以包含不同类型...
    99+
    2023-10-25
    数组 javascript 函数
  • swift元组和数组有什么区别
    Swift元组和数组在Swift语言中都用来存储多个值,但它们有以下区别:1. 类型:数组(Array)是同种类型的元素的有序集合,...
    99+
    2023-10-19
    swift
  • php中关联数组和索引数组有什么区别
    在PHP中,数组是一系列数据的集合,形成一个可操作的整体。每一个数据是一个元素,元素包含键名和键值。索引数组和关联数组的区别是由键名区分的一、索引数组索引数组的下标(键名)由数字组成,默认从 0 开始,每个数字对应一个数组元素在数组中的位置...
    99+
    2020-01-22
    PHP 索引数组 关联数组
  • java数组与javascript数组的区别是什么
    本篇内容主要讲解“java数组与javascript数组的区别是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“java数组与javascript数组的区别是什么”吧!区别说明java中定义数...
    99+
    2023-06-20
  • java数组与javascript数组有哪些区别
    本篇内容主要讲解“java数组与javascript数组有哪些区别”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“java数组与javascript数组有哪些区别...
    99+
    2022-10-19
  • JavaScript关联数组、数组和对象的区别是什么
    这篇文章主要讲解了“JavaScript关联数组、数组和对象的区别是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JavaScript关联数组、数组和对...
    99+
    2022-10-19
  • php数组指针和指针数组有什么区别
    本篇内容主要讲解“php数组指针和指针数组有什么区别”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“php数组指针和指针数组有什么区别”吧!区别指针数组本身是一个数组,数组的元素都是指针,即数组存...
    99+
    2023-06-20
  • php关联数组和索引数组有什么区别
    关联数组和索引数组是PHP中两种常见的数组类型,它们的区别如下:1. 索引数组:索引数组使用数字作为数组的键,键的顺序与元素的插入顺序相对应。例如,$arr = array("apple", "banana", "orange")就是一...
    99+
    2023-08-09
    php
  • PHP索引数组和对象数组有什么区别?
    PHP是一种流行的编程语言,它支持许多不同的数据类型。其中两种常见的数据类型是索引数组和对象数组。这两种数组虽然都是数组,但它们之间有很大的区别。在本文中,我们将讨论PHP索引数组和对象数组的区别,并提供一些演示代码来帮助您更好地理解它们之...
    99+
    2023-08-09
    索引 对象 javascript
  • php中链表和数组有什么区别
    在PHP中,链表和数组都是实现数据结构的方式。虽然两者都可以用来存储和操作数据,但是它们在底层实现和应用场景方面有明显的区别。数组是一种线性结构,由一组相同类型的元素组成,每个元素都有唯一的下标或者键值。在PHP中,数组可以使用索引或者关联...
    99+
    2023-05-14
  • python中数组和列表有什么区别
    在Python中,数组和列表都是用来存储多个值的数据结构。但是它们在一些方面有一些区别。1. 数据类型:数组在Python中是由Nu...
    99+
    2023-08-09
    python
  • golang数组和切片有什么区别
    在Go语言中,数组和切片都是用来存储一组元素的数据结构,但它们有一些重要的区别。1. 固定大小 vs 动态大小:- 数组的大小在创建...
    99+
    2023-09-27
    golang
  • PHP数组和Bash数组的区别是什么?
    PHP和Bash都是常见的编程语言,它们都支持数组。但是它们的数组有哪些区别呢?本文将深入探讨PHP数组和Bash数组的区别,并且提供一些代码演示来帮助你更好地理解。 一、PHP数组 PHP是一种服务器端脚本语言,它是一种用于开发Web应用...
    99+
    2023-10-29
    数组 bash windows
  • php标量数据和数组有什么区别
    这篇“php标量数据和数组有什么区别”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“php标量数据和数组有什么区别”文章吧。最...
    99+
    2023-06-30
  • c语言指针数组和数组指针有什么区别
    C语言中,指针数组和数组指针是两种不同的概念。 指针数组(Pointer Array):指针数组是一个数组,其中的元素都是指针类型...
    99+
    2023-10-27
    c语言
  • C语言数组指针和指针数组有什么区别
    这篇文章主要讲解了“C语言数组指针和指针数组有什么区别”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C语言数组指针和指针数组有什么区别”吧!区别:指针数组本身是一个数组,数组的元素都是指针,...
    99+
    2023-06-20
  • JavaScript怎么将伪数组转换成数组 
    今天小编给大家分享一下JavaScript怎么将伪数组转换成数组 的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。什...
    99+
    2023-07-02
  • javascript对象和数组的区别有哪些
    这篇文章主要介绍了javascript对象和数组的区别有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。区别:区别:1、对象是包含已命名的...
    99+
    2022-10-19
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作