[JavaScript]JavaScript中的Array

JavaScript中的Array

今天较全面地学习到了JS中的Array,也就是数组。写博文一篇来总结一下学习和使用过程中关于Array中的一些误区和常用API,加深一下印象。

关于Array最全面的API在此,MDN

阮一峰阮老师的Array教程

Array的定义

来自MDN的定义:

JavaScript的Array对象是用于构造数组的全局对象,数组是类似于列表的高阶对象

来自阮一峰老师教程的定义:

数组(array)是按次序排列的一组值。每个值的位置都有编号(从0开始),整个数组用方括号表示。

首先,数组是 对象,其次,他 按次序排列

  • 数组与对象的区别

那么数组和对象的区别在哪里呢?

我们先来看一下这段代码:

我们分别声明了一个数组和对象,我们可以看到:arr === obj 的结果为false,而且他们对应的构造函数也不同。

数组arr的构造函数是Array,而obj对应的构造函数Object,这就是他们最本质的区别。

因此,我们也可以说,数组是一个拥有特殊原型链的对象。

Array的声明

  • 直接声明
var arr = [1,2,3]
arr //[1,2,3]

这样我们就创建了一个length为3的数组。

  • 构造函数声明
var arr = new Array(1,2,3)
arr //[1,2,3]

值得注意的是,当我们使用构造函数声明一个数组时,应该注意,不同的参数,会导致它的行为不一致。

var arr = new Array(3)
arr //[empty × 3]

var arr = new Array(3,3)
arr //[3, 3]

因此,我们在声明一个数组时,不建议使用构造函数生成新数组,直接使用数组字面量是更好的做法。

伪数组

如果一个对象的所有键名都是正整数或零,并且有length属性,那么这个对象就很像数组,语法上称为“类似数组的对象”

比如前文提到的:

var arr = {
    ‘0‘:1,
    ‘2‘:2,
    ‘3‘:3
}
  • 如何判断数组是不是伪数组

    • 很简单,这要这个数组的构造函数的原型是Array,他就是真数组;如果他的构造函数的原型是Object,他就是伪数组。
    // 真数组
    arr.__proto__ === Array.prototype   //true
    // 伪数组
    arr.__proto__ === Object.prototype  //true
    • Array.isArray()

      Array.isArray方法返回一个布尔值,表示参数是否为数组。它可以弥补typeof运算符的不足。

    var arr = [1, 2, 3];
    
    typeof arr // "object"
    Array.isArray(arr) // true

Array常用API

阮一峰老师的教程中有很详细的用法讲解,全盘照抄没有意思,重要的是理解,如果实在不记得直接去查询就可以了。

  • push()
  • pop()
  • shift()
  • unshift()
  • forEach()
  • sort()
  • join()
  • concat()
  • map()
  • filter()
  • reduce

原文地址:https://www.cnblogs.com/No-harm/p/9535842.html

时间: 2024-10-29 15:21:06

[JavaScript]JavaScript中的Array的相关文章

ExtJS学习-----------Ext.Array,ExtJS对javascript中的Array的扩展

关于ExtJS对javascript中的Array的扩展.能够參考其帮助文档,文档下载地址:http://download.csdn.net/detail/z1137730824/7748893 因为Array中的方法过多.将当中的部分方法设计实例进行学习.实例地址:http://blog.csdn.net/z1137730824/article/details/38797257 (1)Ext.Array中的方法 clean( Array array ) : Array 过滤掉数组里的空值,空值

javascript中的Array对象的slice()、call()、apply()详解

来51cto已经很多年,就是没怎么写文字,今天来一篇介绍JS的,文章篇幅不是很大,大部分内容是我参考了别人的博客后经过自己理解,自己整理的.方便自己以后回顾知识.文中涉及到javascript中的Array对象的slice().call().apply(); slice()方法,在我之前做的项目中,有两种数据类型下用到过.第一种是string类型的,还有一种是Array对象: string对象的slice(): 定义和用法 slice() 方法可提取字符串的某个部分,并以新的字符串返回被提取的部

详解Javascript中的Array对象

基础介绍 创建数组 和Object对象一样,创建Array也有2种方式:构造函数.字面量法. 构造函数创建 使用构造函数的方式可以通过new关键字来声明,如下所示: 12 var arr = new Array();console.log(arr);//[] 当然也可以不通过new关键字来声明: 12 var arr = Array();console.log(arr); //[] 如果知道数组元素的个数,也可以直接传入数字表示元素个数: 12 var arr2 = new Array(5);c

Javascript中的Array(数组) 、{}(映射) 与JSON解析

做网页总会使用javascript,使用javascript总会使用JSON.最近用到一下,就写写. 下面是总结: 1.将javascript中的Array和{}转化为json字符串可以使用json2.js,源码地址https://github.com/douglascrockford/JSON-js. 2.将json字符串转为javascript对象,可以使用javascript自带的eval函数. 3.javascript中可以使用typeof查看变量的类型. 4.要访问json字段,必须是

JavaScript中的Array.prototype.slice.call()方法学习

JavaScript中的Array.prototype.slice.call(arguments)能将有length属性的对象转换为数组(特别注意: 这个对象一定要有length属性). 但有一个例外,IE下的节点集合它不能转换(因为IE下的dom对象是以com对象的形式实现,js对象和com对象不能进行转换) 首先,我们来看看JavaScript中的slice用法, 在JavaScript中Array是一个类,slice是此类中的一个方法,slice的中文意思是 '截取' 一个是String.

JavaScript中的Array和Map集合对象

JavaScript中的Array和Map集合对象 1.Array 用于在单个变量中存储多个值 创建 new Array(); new Array(size); new Array(element0, element1, ..., elementn); 长度 arr.length;设置或返回数组中元素的数目. 赋值 var arr = new Array(); arr[0] = '555'; arr[1] = '666'; 遍历 arr.forEach( function(a){ documen

javascript语言中的毒瘤(下)

javascript语言中的毒瘤(下) 伪数组 Js中没有正真意义上的数组:这使得数组的使用非常容易,你不必给他们设置维度:而且永远不会产生越界错误:但它的性能相比正真的数组就糟糕了: Typeof 运算符不能辨别数组和对象,要判断一个值是否为数组,你还需要检查它的construtor属性:(也可以使用instanceof) function isArr(my_value) { if(my_value&& typeof my_value === 'object' && my

Javascript Jquery 中的数组定义与操作

Javascript Jquery 中的数组定义与操作 (2012-02-15 10:28:00) 转载▼ 标签: 杂谈   1.认识数组 数组就是某类数据的集合,数据类型可以是整型.字符串.甚至是对象Javascript不支持多维数组,但是因为数组里面可以包含对象(数组也是一个对象),所以数组可以通过相互嵌套实现类似多维数组的功能 1.1 定义数组 声明有10个元素的数组 var a = new Array(10); 此时为a已经开辟了内存空间,包含10个元素,用数组名称加 [下标] 来调用,

JavaScript 原型中的哲学思想

学习JavaScript过程中,原型问题一直让我疑惑许久,那时候捧着那本著名的红皮书,看到有关原型的讲解时,总是心存疑虑.当在JavaScript世界中走过不少旅程之后,再次萌发起研究这部分知识的欲望,翻阅了不少书籍和资料,才搞懂__proto__和prototype的概念.故以作此笔记,日后忘了可以回来看看.如果你看的过程中觉得理解有些困难,把例子在代码中跑一跑,亲手试一试也许能解决不少疑惑. 一切皆为对象 殊不知,JavaScript的世界中的对象,追根溯源来自于一个 null 「一切皆为对