javascript数组详解


Posted in Javascript onOctober 22, 2014

如果你是一个有经验的开发者,你可能会认为这个问题比较简单,但是有的时候,我们会感觉这个问题比较有趣。

首先我们来看看数组的定义:“An array is just a list of values which can be accessed by using an integer as the “key”. The list starts at 0 and goes up from there.”,下面我们用对象来描述数组的定义:

var arr = ["benjamin", "zuojj"];

//=>

var arr = {

    "0": "benjamin",

    "1": "zuojj"

};

看上面的例子,总感觉缺少了什么,OK,数组的长度:

 var arr = {

    "0"      : "benjamin",

    "1"      : "zuojj",

    "length" : 2

};

我们知道,在Javascript语言中,数组是一个特殊的对象,我们可以使用访问数组的方式来访问对象的属性,同时,数组也可以像对象那样添加属性。看下例:

var arr = {

    "0"      : "benjamin",

    "1"      : "zuojj",

    "length" : 2

};

//Outputs: "benjamin"

console.log(arr[0]);

//Outputs: 2

console.log(arr.length);
var arr = ["benjamin", "zuojj"];

arr.url = "3water.com";

//Outputs: "3water.com"

console.log(arr.url);

//Outputs: 2

console.log(arr.length);

下面我们来看看数组的方法,数组有很多可操作的方法,如indexOf/slice/splice/sort等,我们知道实际上这些方法存在于Array.prototype中。看下面的例子:

var arr = ["benjamin", "zuojj"];

//Outputs: 1

console.log(arr.indexOf("zuojj"));

arr.indexOf = function(str) {

    return "It is customed indexOf!";

}

//Outputs: "It is customed indexOf!"

console.log(arr.indexOf("zuojj"));

事实上,我们可以使用对象重载所有的数组方法。看下面的push方法的例子:

var arr = {

    length: 0,

    push: function(val) {

        //赋值

        this[this.length] = val;

        //更新数组长度

        this.length += 1;

        //返回数组长度

        return this.length;

    }

}

arr.push("zuojj");

arr.push("benjamin");

//Object {0: "zuojj", 1: "benjamin", length: 2, push: function}

console.log(arr);

但是有一个是不能从新实现的,数组的字面量定义:

var arr = ["benjamin", "zuojj"];

但是我们可以使用构造函数来代替:

var arr = new Array("benjamin", "zuojj");

如果不适用字面量定义数组,那么我们可以重定义数组的定义,以我们自己的方式。

var myArr = new CustomArray("benjamin", "zuojj");

现在你知道javascript中数组是如何工作的了吧,希望对大家有所帮助。

Javascript 相关文章推荐
Jquery树插件zTree用法入门教程
Feb 17 Javascript
谷歌showModalDialog()方法不兼容出现对话窗口的解决办法
Feb 15 Javascript
javascript如何定义对象数组
Jun 07 Javascript
JQuery遍历元素的父辈和祖先的方法
Sep 18 Javascript
简单实现js无缝滚动效果
Feb 05 Javascript
Vue之Watcher源码解析(2)
Jul 19 Javascript
基于JSON数据格式详解
Aug 31 Javascript
微信小程序表单弹窗实例
Jul 19 Javascript
node上的redis调用优化示例详解
Oct 30 Javascript
Vux+Axios拦截器增加loading的问题及实现方法
Nov 08 Javascript
快速解决layui弹窗按enter键不停弹窗的问题
Sep 18 Javascript
Vue+Vant 图片上传加显示的案例
Nov 03 Javascript
Javascript 数组排序详解
Oct 22 #Javascript
Javascript中arguments对象详解
Oct 22 #Javascript
Javascript中的默认参数详解
Oct 22 #Javascript
js style动态设置table高度
Oct 21 #Javascript
js读写json文件实例代码
Oct 21 #Javascript
一个JavaScript防止表单重复提交的实例
Oct 21 #Javascript
javascript Deferred和递归次数限制实例
Oct 21 #Javascript
You might like
PHP 简单数组排序实现代码
2009/08/05 PHP
PHP为表单获取的URL 地址预设 http 字符串函数代码
2010/05/26 PHP
Codeigniter检测表单post数据的方法
2015/03/21 PHP
Swoole-1.7.22 版本已发布,修复PHP7相关问题
2015/12/31 PHP
PHP空值检测函数与方法汇总
2017/11/19 PHP
PHP设计模式之观察者模式定义与用法示例
2018/08/04 PHP
jquery全选/全不选/反选另一种实现方法(配合原生js)
2013/04/07 Javascript
jQuery实现验证年龄简单思路
2016/02/24 Javascript
使用JavaScript实现弹出层效果的简单实例
2016/05/31 Javascript
[原创]javascript typeof id==='string'?document.getElementById(id):id解释
2016/11/02 Javascript
解决同一页面中两个iframe互相调用jquery,js函数的方法
2016/12/12 Javascript
JavaScript实现经典排序算法之插入排序
2016/12/28 Javascript
原生Javascript插件开发实践
2017/01/18 Javascript
用JS实现简单的登录验证功能
2017/07/28 Javascript
vue移动端监听滚动条高度的实现方法
2018/09/03 Javascript
解决VUE中document.body.scrollTop为0的问题
2018/09/15 Javascript
JavaScript原型对象原理与应用分析
2018/12/27 Javascript
JS实现可切换图片的幻灯切换效果示例
2019/05/24 Javascript
VScode格式化ESlint方法(最全最好用方法)
2019/09/10 Javascript
python切换hosts文件代码示例
2013/12/31 Python
简单的通用表达式求10乘阶示例
2014/03/03 Python
python批量同步web服务器代码核心程序
2014/09/01 Python
python中urllib.unquote乱码的原因与解决方法
2017/04/24 Python
python编写暴力破解zip文档程序的实例讲解
2018/04/24 Python
Python函数生成器原理及使用详解
2020/03/12 Python
python上selenium的弹框操作实现
2020/07/13 Python
python3从网络摄像机解析mjpeg http流的示例
2020/11/13 Python
美国女孩服装购物网站:Justice
2017/03/04 全球购物
Marmot土拨鼠官网:美国专业户外运动品牌
2018/01/11 全球购物
美国生鲜及杂货电商:FreshDirect
2018/01/29 全球购物
UGG英国官方网站:UGG UK
2018/02/08 全球购物
Linux管理员面试经常问道的相关命令
2013/04/29 面试题
初级党校心得体会
2014/09/11 职场文书
科技活动周标语
2014/10/08 职场文书
会议营销主持词
2015/07/03 职场文书
MySQL 不等于的三种使用及区别
2021/06/03 MySQL