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 相关文章推荐
ArrayList类(增强版)
Apr 04 Javascript
Jquery 获取表单text,areatext,radio,checkbox,select值的代码
Nov 12 Javascript
原生Js实现元素渐隐/渐现(原理为修改元素的css透明度)
Jun 24 Javascript
JQuery实现鼠标滑过显示导航下拉列表
Sep 12 Javascript
JS Replace 全部替换字符的用法小结
Dec 24 Javascript
node.js实现端口转发
Apr 14 Javascript
jquery实现图片上传前本地预览功能
May 10 Javascript
Node.js通过身份证号验证年龄、出生日期与性别方法示例
Mar 09 Javascript
JavaScript实现form表单的多文件上传
Mar 27 Javascript
angularjs数组判断是否含有某个元素的实例
Feb 27 Javascript
vue中手机号,邮箱正则验证以及60s发送验证码的实例
Mar 16 Javascript
vue任意关系组件通信与跨组件监听状态vue-communication
Oct 18 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
咖啡豆要不要放冰箱的原因
2021/03/04 冲泡冲煮
安装APACHE
2007/01/15 PHP
fleaphp crud操作之findByField函数的使用方法
2011/04/23 PHP
ThinkPHP模板判断输出Present标签用法详解
2014/06/30 PHP
php+memcache实现的网站在线人数统计代码
2014/07/04 PHP
在UpdatePanel内jquery easyui效果失效的解决方法
2010/04/11 Javascript
javascript中"/"运算符常见错误
2010/10/13 Javascript
jQuery(非HTML5)可编辑表格实现代码
2012/12/11 Javascript
jQuery中:image选择器用法实例
2015/01/03 Javascript
Node.js开发之访问Redis数据库教程
2015/01/14 Javascript
JavaScript仿静态分页实现方法
2015/08/04 Javascript
js鼠标点击按钮切换图片-图片自动切换-点击左右按钮切换特效代码
2015/09/02 Javascript
JavaScript小技巧整理篇(非常全)
2016/01/26 Javascript
jQuery实现简单倒计时功能的方法
2016/07/04 Javascript
D3.js实现柱状图的方法详解
2016/09/21 Javascript
微信小程序实现带刻度尺滑块功能
2017/03/29 Javascript
vue.js 使用v-if v-else发现没有执行解决办法
2017/05/15 Javascript
bootstrap-Treeview实现级联勾选
2017/11/23 Javascript
jQuery实现模拟搜索引擎的智能提示功能简单示例
2019/01/27 jQuery
微信小程序里引入SVG矢量图标的方法
2019/09/20 Javascript
[49:08]完美世界DOTA2联赛PWL S2 LBZS vs FTD.C 第一场 11.27
2020/12/01 DOTA
Python3控制路由器——使用requests重启极路由.py
2016/05/11 Python
python2.7无法使用pip的解决方法(安装easy_install)
2018/04/03 Python
详解Python静态网页爬取获取高清壁纸
2019/04/23 Python
python实现批处理文件
2020/07/28 Python
4款Python 类型检查工具,你选择哪个呢?
2020/10/30 Python
华丽的手绘陶瓷:MacKenzie-Childs
2017/02/04 全球购物
简述synchronized和java.util.concurrent.locks.Lock的异同
2014/12/08 面试题
工艺员岗位职责
2014/02/11 职场文书
教师自我剖析材料范文
2014/09/30 职场文书
2015年中学总务处工作总结
2015/07/22 职场文书
2016教师读书思廉心得体会
2016/01/23 职场文书
《颐和园》教学反思
2016/02/19 职场文书
初中思想品德教学反思
2016/02/24 职场文书
咖啡厅里的创业计划书
2019/08/21 职场文书
gateway网关接口请求的校验方式
2021/07/15 Java/Android