javascript Array对象基础知识小结


Posted in Javascript onNovember 16, 2010

对于Array对象我的总结思想是:5法,3招,12式

1.声明5法:只针对一维数组,当然还有二维三维,这里就不做解释了

var a = new Array(); 
var a = new Array; 
var a = new Array(10);//创建Array对象,并指定数组中项的个数 
var a = new Array("red","blue","green"); 
var a = ["red"," blue"," green"];

2.属性3招:constructor,length,prototype
constructor表示创建对象的函数。 constructor 属性是所有具有 prototype 的对象的成员。它们包括除 Global 和 Math 对象以外的所有 JScript 固有对象。constructor 属性保存了对构造特定对象实例的函数的引用。例如:
x = new String("Hi"); 
if (x.constructor == String) 
// 进行处理(条件为真)。 
或 
function MyFunc { 
// 函数体。 
} 
y = new MyFunc; 
if (y.constructor == MyFunc) 
// 进行处理(条件为真)。

Length表示数组的长度,有多少项。这个就不写示例了。
prototype返回对象类型原型的引用。用 prototype 属性提供对象的类的一组基本功能。对象的新实例“继承”赋予该对象原型的操作。
例如,要为 Array 对象添加返回数组中最大元素值的方法。要完成这一点,声明该函数,将它加入 Array.prototype, 并使用它。
function array_max( ){ 
var i, max = this[0]; 
for (i = 1; i < this.length; i++) 
{ 
if(max < this[i]) 
max = this[i]; 
} 
return max; 
} 
Array.prototype.max = array_max; 
var x = new Array(1, 2, 3, 4, 5, 6); 
var y = x.max( );

该代码执行后,y 保存数组 x 中的最大值,或说 6。
3.方法12式:concat 方法 | join 方法 | pop 方法 | push 方法 | reverse 方法 | shift 方法| unshift 方法| slice 方法| splice 方法| sort 方法| toString 方法| valueOf 方法
//1.concat():返回一个新数组,这个新数组是由两个或更多数组组合而成的。 
var a1 = [1,2,3,4]; 
var a2 = a1.concat("5",'6'); 
alert(a2); //结果:1,2,3,4,5,6 
//2.join():返回字符串值,其中包含了连接到一起的数组的所有元素,元素由指定的分隔符分隔开来。 
var a1 = [1,2,3,4]; 
var a2 = a1.join(); 
var a3 = a1.join(","); 
var a4 = a1.join("|"); 
alert(a2); //结果:1,2,3,4 
alert(a3); //结果:1,2,3,4 
alert(a4); //结果:1|2|3|4 
//3.pop():移除数组中的最后一个元素并返回该元素。如果该数组为空,那么将返回 undefined。 
var a1 = [1,2,3,4]; 
var item = a1.pop(); 
alert(item); //结果:4 
alert(a1);//结果:1,2,3 
//4.push():将新元素添加(追加)到一个数组中,并返回数组的新长度值。push 方法将以新元素出现的顺序添加这些元素。如果参数之一为数组,那么该数组将作为单个元素添加到数组中。如果要合并两个或多个数组中的元素,请使用 concat 方法。 
var a1 = [1,2,3,4]; 
a1.push(5); 
a1.push("6"); 
alert(a1);//结果:1,2,3,4,5,6 
//5.reverse():返回一个元素顺序被反转的 Array 对象。 
var a1 = [1,2,3,4]; 
a1.reverse(); 
alert(a1);//结果:4,3,2,1 
//6.shift():移除数组中的第一个元素并返回该元素。 
var a1 = [1,2,3,4]; 
a1.shift(); 
alert(a1);//结果:2,3,4 
//7.unshift():将指定的元素插入数组开始位置并返回该数组。 
var a1 = [1,2,3,4]; 
a1.unshift(5); 
alert(a1);//结果:5,1,2,3,4 
//8.slice():返回一个数组的一段。a1.slice(start, [end]),slice 方法一直复制到 end 所指定的元素,但是不包括该元素。如果 start 为负,将它作为 length + start处理,此处 length 为数组的长度。如果 end 为负,就将它作为 length + end 处理,此处 length 为数组的长度。如果省略 end ,那么 slice 方法将一直复制到 arrayObj 的结尾。如果 end 出现在 start 之前,不复制任何元素到新数组中。 
var a1 = [1,2,3,4]; 
var a2 = a1.slice(-1); 
var a3 = a1.slice(0,-1); 
var a4 = a1.slice(1); 
alert(a2);//结果:4 
alert(a3);//结果:1,2,3 
alert(a4);//结果:2,3,4 
//9.splice():从一个数组中移除一个或多个元素,如果必要,在所移除元素的位置上插入新元素,返回所移除的元素。 
//arrayObj.splice(start, deleteCount, [item1[, item2[, . . . [,itemN]]]]) 
var a1 = [1,2,3,4]; 
var a2 = a1.splice(1,0); 
var a3 = a1.splice(1,1); 
var a4 = a1.splice(1,1,"5"); 
alert(a2);//结果: 
alert(a3);//结果:2 
alert(a1);//结果:1,5,4 
//10.sort():返回一个元素已经进行了排序的 Array 对象。 
var a1 = [2,3,1,4,"b","a"]; 
var a2 = a1.sort(); 
alert(a2);//结果:1,2,3,4,a,b 
//11.toString():返回对象的字符串表示。 
var a1 = [1,2,3,4,"b","a"]; 
var a2 = a1.toString(); 
alert(a2);//结果:1,2,3,4,b,a 
//12.valueOf():返回指定对象的原始值。 
var a1 = [1,2,3,4,"b","a"]; 
var a2 = a1.valueOf(); 
alert(a2);//结果:1,2,3,4,b,a

indexOf扩展:
if (!Array.prototype.indexOf) Array.prototype.indexOf = function(item, i) { 
i || (i = 0); 
var length = this.length; 
if (i < 0) i = length + i; 
for (; i < length; i++) 
if (this[i] === item) return i; 
return -1; 
}; 
function testIndexOf() 
{ 
var a =[1,2,3,4]; 
alert(a.indexOf(3)); 
} 
<input type="button" value="测试获取数组下标" onclick="testIndexOf()" />
Javascript 相关文章推荐
基于jquery的分页控件(C#)
Jan 06 Javascript
jquery each的几种常用的使用方法示例
Jan 21 Javascript
javascript学习笔记(五)原型和原型链详解
Oct 08 Javascript
关于编写性能高效的javascript事件的技术
Nov 28 Javascript
jQuery mobile 移动web(4)
Dec 20 Javascript
详解从新建vue项目到引入组件Element的方法
Aug 29 Javascript
AngularJS实现自定义指令及指令配置项的方法
Nov 20 Javascript
使用async-validator编写Form组件的方法
Jan 10 Javascript
微信小程序实现form表单本地储存数据
Jun 27 Javascript
微信小程序防止多次点击跳转和防止表单组件输入内容多次验证功能(函数防抖)
Sep 19 Javascript
浅谈JavaScript窗体Window.ShowModalDialog使用
Jul 22 Javascript
three.js中多线程的使用及性能测试详解
Jan 07 Javascript
纯js实现背景图片切换效果代码
Nov 14 #Javascript
基于jquery的自定义鼠标提示效果 jquery.toolTip
Nov 14 #Javascript
cnblogs中在闪存中屏蔽某人的实现代码
Nov 14 #Javascript
基于MooTools的很有创意的滚动条时钟动画
Nov 14 #Javascript
javascript 学习笔记(onchange等)
Nov 14 #Javascript
javascript取消文本选定的实现代码
Nov 14 #Javascript
IE6下通过a标签点击切换图片的问题
Nov 14 #Javascript
You might like
php的ZipArchive类用法实例
2014/10/20 PHP
ci检测是ajax还是页面post提交数据的方法
2014/11/10 PHP
PHP单例模式详细介绍
2015/07/01 PHP
php提交post数组参数实例分析
2015/12/17 PHP
WordPress中给文章添加自定义字段及后台编辑功能区域
2015/12/19 PHP
PHP版本升级到7.x后wordpress的一些修改及wordpress技巧
2015/12/25 PHP
PHP中ID设置自增后不连续的原因分析及解决办法
2016/08/21 PHP
php PDO属性设置与操作方法分析
2018/12/27 PHP
使用JavaScript检测Firefox浏览器是否启用了Firebug的代码
2010/12/28 Javascript
jquery1.5.1中根据元素ID获取元素对象的代码
2011/04/02 Javascript
使用javaScript动态加载Js文件和Css文件
2015/10/24 Javascript
JavaScript页面实时显示当前时间实例代码
2016/10/23 Javascript
微信小程序 网络API发起请求详解
2016/11/09 Javascript
Jquery Easyui日历组件Calender使用详解(23)
2016/12/18 Javascript
js实现PC端根据IP定位当前城市地理位置
2017/02/22 Javascript
jQuery Jsonp跨域模拟搜索引擎
2017/06/17 jQuery
详解koa2学习中使用 async 、await、promise解决异步的问题
2018/11/13 Javascript
浅谈layui分页控件field参数接收对象的问题
2019/09/20 Javascript
layui 上传图片 返回图片地址的方法
2019/09/26 Javascript
[48:41]VP vs VG Supermajor小组赛 B组胜者组决赛 BO3 第二场 6.2
2018/06/03 DOTA
[06:53]2018DOTA2国际邀请赛寻真——为复仇而来的Newbee
2018/08/15 DOTA
Python中文件遍历的两种方法
2014/06/16 Python
用Python计算三角函数之atan()方法的使用
2015/05/15 Python
Python同时向控制台和文件输出日志logging的方法
2015/05/26 Python
优瑞自动咖啡机官网:Jura
2018/09/29 全球购物
我有一个char * 型指针正巧指向一些int 型变量, 我想跳过它们。 为什么如下的代码((int *)p)++; 不行?
2013/05/09 面试题
常用UNIX 命令(Linux的常用命令)
2013/07/10 面试题
土木工程实习生自我鉴定
2013/09/19 职场文书
成人高等教育毕业生自我鉴定
2013/10/22 职场文书
预备党员公开承诺书
2014/05/28 职场文书
民事诉讼代理授权委托书范本
2014/10/08 职场文书
个人批评与自我批评总结
2014/10/17 职场文书
商超业务员岗位职责
2015/02/13 职场文书
阳光体育运动标语口号
2015/12/26 职场文书
《葡萄沟》教学反思
2016/02/23 职场文书
postgresql如何找到表中重复数据的行并删除
2023/05/08 MySQL