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 实现GridView异步排序、分页的代码
Feb 06 Javascript
js 数值项目的格式化函数代码
May 14 Javascript
简单的jquery拖拽排序效果实现代码
Sep 20 Javascript
用js小类库获取浏览器的高度和宽度信息
Jan 15 Javascript
解决jquery submit()提交表单提示:f[s] is not a function
Jan 23 Javascript
关于ExtJS4.1:快捷键支持的问题
Apr 24 Javascript
js读写cookie实现一个底部广告浮层效果的两种方法
Dec 29 Javascript
基于Vue过渡状态实例讲解
Sep 14 Javascript
JS实现的哈夫曼编码示例【原始版与修改版】
Apr 22 Javascript
JavaScript中十种一步拷贝数组的方法实例详解
Apr 22 Javascript
vue 地图可视化 maptalks 篇实例代码详解
May 21 Javascript
vue flex 布局实现div均分自动换行的示例代码
Aug 05 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操作mysqli(示例代码)
2013/10/28 PHP
thinkphp四种url访问方式详解
2014/11/28 PHP
php设计模式之正面模式实例分析【星际争霸游戏案例】
2020/03/24 PHP
从Ajax到JQuery Ajax学习
2007/02/14 Javascript
JavaScript中__proto__与prototype的关系深入理解
2012/12/04 Javascript
关于jQuery对象数据缓存Cache原理以及jQuery.data详解
2013/04/07 Javascript
Extjs根据条件设置表格某行背景色示例
2014/07/23 Javascript
Javascript常用字符串判断函数代码分享
2014/12/08 Javascript
jQuery实现ajax的叠加和停止(终止ajax请求)
2016/08/08 Javascript
基于JavaScript实现数码时钟效果
2020/03/30 Javascript
babel之配置文件.babelrc入门详解
2018/02/22 Javascript
layui的表单验证支持ajax判断用户名是否重复的实例
2019/09/06 Javascript
Vue列表如何实现滚动到指定位置样式改变效果
2020/05/09 Javascript
JavaScript日期库date-fn.js使用方法解析
2020/09/09 Javascript
解决antd 表单设置默认值initialValue后验证失效的问题
2020/11/02 Javascript
[58:25]VP vs RNG 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
Python 中Pickle库的使用详解
2018/02/24 Python
解决python3 urllib 链接中有中文的问题
2018/07/16 Python
解决python3 安装完Pycurl在import pycurl时报错的问题
2018/10/15 Python
Python telnet登陆功能实现代码
2020/04/16 Python
jupyter notebook 的工作空间设置操作
2020/04/20 Python
pytorch判断是否cuda 判断变量类型方式
2020/06/23 Python
python两种注释用法的示例
2020/10/09 Python
使用CSS3制作响应式导航菜单的方法
2015/07/12 HTML / CSS
高分子材料个人求职信范文
2013/09/25 职场文书
学生处主任岗位职责
2013/12/01 职场文书
节约用水的口号
2014/06/20 职场文书
环保志愿者活动方案
2014/08/14 职场文书
科级干部群众路线教育实践活动个人对照检查材料
2014/09/19 职场文书
通知的写法
2015/04/23 职场文书
中学生打架《检讨书》范文
2019/08/12 职场文书
JS继承最简单的理解方式
2021/03/31 Javascript
Django项目如何获得SSL证书与配置HTTPS
2021/04/30 Python
如何用Navicat操作MySQL
2021/05/12 MySQL
浅谈python数据类型及其操作
2021/05/25 Python
让文件路径提取变得更简单的Python Path库
2021/05/27 Python