
javascript Array对象基础
发布日期:2021-05-13 07:41:50
浏览次数:18
分类:博客文章
本文共 3747 字,大约阅读时间需要 12 分钟。
感觉自己对Array对象总是有种朦胧的感觉,今天自己手写总结,加深一下印象。
对于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() " / >
发表评论
最新留言
路过,博主的博客真漂亮。。
[***.116.15.85]2025年04月11日 11时50分43秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
BUU-MISC-认真你就输了
2019-03-09
BUU-MISC-caesar
2019-03-09
【专题2:电子工程师 之 上位机】 之 【36.事件重载】
2019-03-09
【专题3:电子工程师 之 上位机】 之 【46.QT音频接口】
2019-03-09
一文理解设计模式--命令模式(Command)
2019-03-09
VTK:可视化之RandomProbe
2019-03-09
block多队列分析 - 2. block多队列的初始化
2019-03-09
Java时间
2019-03-09
不编译只打包system或者vendor image命令
2019-03-09
The wxWindows Library Licence (WXwindows)
2019-03-09
leetcode——第203题——虚拟头结点
2019-03-09
【编程】C语言入门:1到 100 的所有整数中出现多少个数字9
2019-03-09
MySQL----基础及常用命令
2019-03-09
flink启动(二)
2019-03-09
前端开发进阶手册.pdf
2019-03-09
软件架构设计和MESH经验之谈
2019-03-09
关于宝塔面板安装的mysql用Navicat连接出现2003的错误解决
2019-03-09
Windows2016 FTP用户隔离
2019-03-09
js传入参数是中文的时候出现 “******”未定义错误
2019-03-09
吴恩达机器学习课程笔记(英文授课) Lv.1 新手村(回归)
2019-03-09