`
everlxq
  • 浏览: 108739 次
  • 性别: Icon_minigender_1
  • 来自: 青岛
社区版块
存档分类
最新评论

js数组使用方法与实例教程

 
阅读更多

定义数组
数组对象用来在单独的变量名中存储一系列的值。
我们使用关键词 new 来创建数组对象。下面的代码定义了一个名为 myArray 的数组对象:
var myArray=new Array()有两种向数组赋值的方法(你可以添加任意多的值,就像你可以定义你需要的任意多的变量一样)。
1:
var mycars=new Array()
mycars[0]="Saab"
mycars[1]="Volvo"
mycars[2]="BMW"也可以使用一个整数自变量来控制数组的容量:
var mycars=new Array(3)
mycars[0]="Saab"
mycars[1]="Volvo"
mycars[2]="BMW"2:
var mycars=new Array("Saab","Volvo","BMW")注意:如果你需要在数组内指定数值或者逻辑值,那么变量类型应该是数值变量或者布尔变量,而不是字符变量。
访问数组
通过指定数组名以及索引号码,你可以访问某个特定的元素。
下面是代码行:
document.write(mycars[0])下面是输出:
Saab修改已有数组中的值
如需修改已有数组中的值,只要向指定下标号添加一个新值即可:
mycars[0]="Opel";现在,以上代码:
document.write(mycars[0]);将输出:
Opel
.如何创建数组
  2.如何对数组进行操作(添加,删除,读取)
  3.数组常见方法和属性
  如何创建一个数组,一般地根据初始化设定简单分为3种:
  1.单纯创建数组:
  var arr=new Array();
  要点:用new关键字创建数组对象Array(),Array()对象是一个本地类,可以用new创建一个对象后使用
  2.创建数组的同时规定数组大小:
  var arr=new Array(10);//这里就创建了一个初始化大小为10的数组
  注意:当使用数组大小操作初始化大小时,数组会自动被撑大,不会像C语言那样发生错误.动态增长是js数组的一个性质.另外,js中支持最大数组长度为4294967295
  3.直接初始化:
  var arr=new Array("草履虫","爱","毛毛");//这里就直接初始化了数组
  或var arr=["草履虫","爱","毛毛"];//括号也可以声明一个数组对象
  当然,类似C语言,你也可以定义2维3维和多维的数组,这里不讨论.
  数组的属性:length
  arr.length返回数组arr的长度,常见于循环中对数组的遍历,比如:
for(var i=0;i<arr.length;i++){
执行部分
}
  数组元素的访问: arr[index],其中index表示索引即数组基数,从0开始,共有arr.length个元素.比如: arr[0]访问第一个数组元素,arr[1]访问第二个数组元素....依次类推 数组的操作方法:先概览下下面的这些操作数组常用的方法(13个)
toString(),valueOf(),toLocalString(),join(),split(),slice(),concat(),
pop(),push(),shift(),unshift(),sort(),splice()
  下面逐一分析这些方法的功能和用法.
  toString(),valueOf(),toLocalString():
  功能:返回数组的全部元素
  注:数组名也可以返回整个数组
  代码:
  var m=["am","bm","cm"];//用括号声明一个数组对象  
  alert(m.toString());//toString()返回数组对象的所有内容,用逗号分割,即am,bm,cm  
  alert(m.valueOf());//valueOf()也返回数组对象的所有内容  
  alert(m.toLocaleString());//toLocaleString()也返回数组对象的所有内容,但有地区语言区别,暂不研究  
  alert(m);//数组名也返回数组对象的所有内容 
var m=["am","bm","cm"];//用括号声明一个数组对象 alert(m.toString());//toString()返回数组对象的所有内容,用逗号分割,即am,bm,cm alert(m.valueOf());//valueOf()也返回数组对象的所有内容 alert(m.toLocaleString());//toLocaleString()也返回数组对象的所有内容,但有地区语言区别,暂不研究 alert(m);//数组名也返回数组对象的所有内容
运行: <script>var m=["am","bm","cm"];alert(m.toString());alert(m.valueOf());alert(m.toLocaleString());</script>
join():
  功能:把数组各个项用某个字符(串)连接起来,但并不修改原来的数组
  代码:
  var m=["am","bm","cm"];//用括号声明一个数组对象  
  var n=m.join("---");//用---连接am,bm,cm.  
  alert(m.toString());//m并没有被修改,返回am,bm,cm  
  alert(n);//n是一个字符串,为am---bm---cm 
var m=["am","bm","cm"];//用括号声明一个数组对象 var n=m.join("---");//用---连接am,bm,cm. alert(m.toString());//m并没有被修改,返回am,bm,cm alert(n);//n是一个字符串,为am---bm---cm
运行: <script>var m=["am","bm","cm"];var n=m.join("---");alert(m.toString());alert(n);</script>
  split():
  功能:把一个字符串按某个字符(串)分割成一个数组,但不修改原字符串
  代码:
  var str="I love maomao,I am caolvchong";  
  var arr=str.split("o");//按字符o把str字符串分割成一个数组  
  alert(arr);//输出整个数组 
var str="I love maomao,I am caolvchong"; var arr=str.split("o");//按字符o把str字符串分割成一个数组 alert(arr);//输出整个数组
运行: <script>var str="I love maomao,I am caolvchong";var arr=str.split("o");alert(arr);</script>
  slice():返回某个位置开始(到某个位置结束)的数组部分,不修改原数组
  代码:
  var m=["am","bm","cm","dm","em","fm"];  
  var n=m.slice(2);//返回第二个元素bm后面的元素,即cm,dm,em,fm  
  var q=m.slice(2,5);//返回第二个元素后到第五个元素,即cm,dm,em  
  alert(n);  
  alert(q); 
var m=["am","bm","cm","dm","em","fm"]; var n=m.slice(2);//返回第二个元素bm后面的元素,即cm,dm,em,fm var q=m.slice(2,5);//返回第二个元素后到第五个元素,即cm,dm,em alert(n); alert(q);
运行: <script>var m=["am","bm","cm","dm","em","fm"];var n=m.slice(2);var q=m.slice(2,5);alert(n);alert(q);</script>
 数组对象的栈操作:
  push():数组末尾添加一个项
  pop():删除数组最后一个项
  代码:
  var m=["am","bm","cm","dm","em","fm"];  
  m.push("gm");//在数组末尾添加元素gm  
  alert(m);  
  m.pop();//删除数组最后一个元素gm  
  alert(m); 
var m=["am","bm","cm","dm","em","fm"]; m.push("gm");//在数组末尾添加元素gm alert(m); m.pop();//删除数组最后一个元素gm alert(m);
运行: <script>var m=["am","bm","cm","dm","em","fm"];m.push("gm");alert(m);m.pop();alert(m);</script>
  数组对象的队列操作:
  unshift():数组头添加一个项
  shift():删除数组第一个项
  代码:
  var m=["am","bm","cm","dm","em","fm"];  
  m.unshift("gm");//在数组第一个元素位置添加元素gm  
  alert(m);  
  m.shift();//删除数组第一个元素gm  
  alert(m); 
var m=["am","bm","cm","dm","em","fm"]; m.unshift("gm");//在数组第一个元素位置添加元素gm alert(m); m.shift();//删除数组第一个元素gm alert(m);
运行: <script>var m=["am","bm","cm","dm","em","fm"];m.unshift("gm");alert(m);m.shift();alert(m);</script>
  sort():数组按字符的ASCII码进行排序,修改数组对象
  注:即便是数字数组,也将转化为字符串来进行比较排序
  代码:
  var m=["am","fm","gm","bm","em","dm"];  
  m.sort();//按字母序排序  
  alert(m); 
var m=["am","fm","gm","bm","em","dm"]; m.sort();//按字母序排序 alert(m);
运行: <script>var m=["am","fm","gm","bm","em","dm"];m.sort();alert(m);</script>
  concat():在数组尾添加元素,但不修改数组对象
  代码:
  var m=["am","bm"]  
  var n=m.concat("cm");//添加一项cm,并且赋予新数组对象  
  alert(m);//原数组没有被修改  
  alert(n);//输出新数组对象 
var m=["am","bm"] var n=m.concat("cm");//添加一项cm,并且赋予新数组对象 alert(m);//原数组没有被修改 alert(n);//输出新数组对象
运行: <script>var m=["am","bm"];var n=m.concat("cm");alert(m);alert(n);</script>
  splice():在数组的任意位置进行添加,删除或者替换元素,直接修改数组对象
  细节:
  splice()有三个参数或三个以上参数,前两个是必须的,后面参数是可选的
  进行添加:splice(起始项,0,添加项)
  进行删除:splice(起始项,要删除的项个数)
  进行替换:splice(起始项,替换个数,替换项) 这个其实是添加删除的共同结果
  代码:
  var m=["am","bm"]  
  m.splice(1,0,"fm","sm");//在第一项后面添加fm和sm,返回am,fm,sm,bm  
  alert(m);  
  m.splice(2,1);//删除第二项后面一项(即第三项sm,返回am,fm,bm)  
  alert(m);  
  m.splice(2,1,"mm");//替换第二项后面一项(即第三项,返回am,fm,mm)  
  alert(m); 
var m=["am","bm"] m.splice(1,0,"fm","sm");//在第一项后面添加fm和sm,返回am,fm,sm,bm alert(m); m.splice(2,1);//删除第二项后面一项(即第三项sm,返回am,fm,bm) alert(m); m.splice(2,1,"mm");//替换第二项后面一项(即第三项,返回am,fm,mm) alert(m);
运行: <script>var m=["am","bm"];m.splice(1,0,"fm","sm");alert(m);m.splice(2,1);alert(m);m.splice(2,0,"mm");alert(m);</script>

可用以下的三种方式来创建javascript 中的数组.
*/
var a=new Array();
var b=new Array(5,4,3,"first","test,string");
var c=new Array(20);
a[1.23]="test";
document.write("a[1.23]="+a[1.23]);
//相信每位从强类型的编程语言学习javascript时,绝对会以为上面这种操作感到惊讶,
//float数据也作数组的下标了,事实上                       并非如您所想       
//javascript在您是用负数,浮点数,(或布尔型,对象,其他值时),javascript会将它转换为一个字符串
//用生成的字符串作为对象的属性名字,而不是定义了一个新的数组元素
//上面的实例事实就是为a 创建了一个名为:"1.23"的属性.
document.write("a.length="+a.length);
document.write("b.length="+b.length);
document.write("c.length="+c.length);
a[3]="Test";
document.write("<br />a[3]="+a[3]);
document.write("<br/>a.length="+a.length);
//以上测试也很明确我们用整数作为数组的下标是才会真正为数组添加一个元素,
//这里用数组的长度来体现了javascript的数组中的奥妙。

//通过设置数组的length属性能过截断数组的长度。
a.length=3;
if (a[3]==undefined)
{
  document.write("<br />在a.length="+a.length+"后,a[3]="+a[3]);
}
else
{
    document.write("<br />在a.length="+a.length+"后,a[3]="+a[3]);
}
//这里测试我们的多维数组元素
/*
*javascript中实际上是不支持多维数组
*但是我们将一个一维数组的元素再赋给其一个一维数组,这样就看起来就实现了多维数组了,但
实际上他还是个一维数组,这和我们理解c语言的数组时的那种想法一样,但他们的实现机制是不一样的。
*/
var g=new Array(3);
g[3]=a;
g[3][2]="Test"
document.write("<br />g[3][2]="+g[3][2]);
 
  //数组join()方法
  for (var i=0;i<20 ;i++ )
  {
c[i]=i;
document.write("<br />c[i]="+c[i]);
  }
  document.write("<br/>c的元素join()方法后是:"+c.join());
  //数组的reverse()方法
  c.reverse();
  document.write("<br />c的元素在reverse()方法再join()后的结果是:"+c.join("|"));
  //concat()方法的测试
  var h=new Array(1,2,3);
  h= h.concat([4,5]);
  //但是concat函数不会递归地展开一个元素为数组的数组。
  h=h.concat(6,7,[9,[10,20]]);
  document.write("<br />h.length="+h.length+"<br />"+h);
  document.write("h[8]="+h[8]);

  //slice()方法
  document.write("<br>h.slice(4,5)="+h.slice(4,5));
document.write("h.slice(5,9)="+h.slice(5,9))
//slice()方法:返回的数组包含有第一个参数指定的元素和那个元素开始到第二个参数指定的
//元素为止的元素但不包含第二个参数所指定的元素。

//splice()方法
//splice()方法是插入或删除数组元素通用的方法。
/*
splice函数第一个参数指定了要插入或删除的元素在数组中的位置。
第二个参数指定了要从数组中删除的元个数
在第二参数之后可以有任意多个参数,它们指定的是从第一个参数指定的位置处插入的元素。
第一个元素及后续元素,做出相应的移动。
*/
document.write("<br />h.splice(8,1)后的h为::"+h.splice(8,1));
//document.write("<br />h.splice(8,0,'a','b','Test')后的h为::"+h.splice(8,0,'a','b','Test'));
h.splice(7,0,'a','b','Test');
document.write("<br />h.splice(7,0,'a','b','Test')后的h为:"+h);

//javascript中的数组作为堆栈时和php类似
//这点有趣更有用。
//以下是作为堆栈是使用的小实例
/*
push方法是将一个或多个新元素附加到数组的尾部,然后返回数组的新长度。
pop将删除数组的最后一个元素,坚守数组的长度,返回他删除的值。
*/
var stack=new Array();
stack.push(1,2);
document.write("<br>stack的元素是:"+stack);
document.write("<br />stack.length="+stack.length);
document.write("<br>stack.pop()返回的结果是:"+stack.pop());
document.write("<br />stack.length="+stack.length);
//以下是作为队列使用的小实例
/*
unshift方法将一个或多个元素添加到数组元素的头部,然后把已有的元素移动到下标最大的位置已腾出空间
,它返回的是主族的新长度。
方法shift是删除并返回数组的第一个元素,然后将后面的所有元素都向前移动以填补第一个元素留下的空白。
*/
var list=[];
list.unshift(6,2);
document.write("<br >list的内容为:"+list);
document.write("<br>list的shift方法是:"+list.shift());
//此外就剩下,我们在java中熟悉的toString()方法 了
//It's a piece of cake!
document.write(c.toString());
//说白了,其实数组的toString()方法和无参数的join()的效果是完全相同
//OK,this's chapter for Array,that's all!
</script>
分享到:
评论

相关推荐

    JavaScript:数组与字符串操作教程

    ### JavaScript:数组与字符串操作教程 #### 一、变量与数据类型 在JavaScript中,变量是...通过具体示例,加深了对JavaScript数组和字符串处理的理解。掌握了这些基本知识后,可以更灵活地处理实际项目中的数据。

    JavaScript基础与实例教程

    教程可能涵盖数组方法、正则表达式、错误处理、性能优化、跨域通信以及与jQuery、React等库或框架的结合使用等内容,全面提高JavaScript编程能力。无论是前端开发还是后端开发,JavaScript都是不可或缺的一部分,...

    javascript精彩实例教程

    JavaScript精彩实例教程是一本专注于实践应用的编程指南,旨在帮助初学者和有一定基础的开发者深入理解和掌握JavaScript这门强大的脚本语言。JavaScript,通常简称为JS,是网页开发中的核心语言,广泛应用于交互式...

    javascript 网页开发实例教程

    5. 对象和数组:学习JavaScript对象的创建和操作,数组的常用方法,以及如何使用JSON格式进行数据交换。 二、JavaScript进阶 1. 面向对象编程:理解原型链、构造函数、继承、封装和多态等面向对象编程的核心概念。 ...

    JavaScript 网页开发实例教程

    本实例教程将深入探讨如何使用JavaScript进行高效的网页开发,帮助初学者和进阶者提升技能,实现动态和交互性的网页效果。 一、JavaScript基础 1. 变量与数据类型:JavaScript支持多种数据类型,包括基本类型(如...

    Java入门到架构师教程之JavaScript数组.pdf

    本教程主要介绍了JavaScript数组的基础知识和常见操作。 1. **数组定义** 在JavaScript中,有三种方式来定义数组: - **隐式创建**:通过方括号 `[]` 直接初始化数组,如 `var arr = [值1, 值2, 值3];` - **直接...

    VBScript与JScript实例教程

    《VBScript与JScript实例教程》是一本专为初学者设计的编程教程,它深入浅出地介绍了这两种脚本语言的基础知识和实际应用。VBScript(Visual Basic Script Edition)和JScript是两种广泛用于Web开发的轻量级脚本语言...

    JavaScript实例教程源码

    这个“JavaScript实例教程源码”提供了一个深入学习和实践JavaScript的宝贵资源。以下将详细介绍其中可能涵盖的知识点。 一、JavaScript基础 1. 变量与数据类型:了解JavaScript中的var、let和const关键字,以及...

    JavaScript实例教程源代码.rar

    本实例教程源代码提供了丰富的实践示例,旨在帮助学习者深入理解JavaScript的核心概念和实际应用。以下是对21章JavaScript实例教程源代码的详细解读: 1. **变量与数据类型**:在JavaScript中,变量用于存储数据,...

    ios-runtime 一步到位解析字典嵌套数组嵌套字典的实例方法,可以自己扩展.zip

    本教程将深入讲解如何使用iOS的runtime机制来解析包含字典、嵌套数组和字典的JSON数据,并提供一个可扩展的实例方法。首先,让我们理解JSON的基本结构。 JSON数据由键值对组成,键必须是字符串,而值可以是字符串、...

    编程语言JavaScript免费视频实例教程

    本免费视频实例教程旨在帮助初学者和有一定基础的学习者深入理解和掌握JavaScript的基本概念和高级特性。 在本教程中,我们将涵盖以下几个关键知识点: 1. **JavaScript基础**:从最基础的语法开始,包括变量声明...

    《JavaScript动态网页设计经典实例教程》的代码

    《JavaScript动态网页设计经典实例教程》是一本专为学习JavaScript编程者准备的实践性教材,其核心在于通过实例教学,帮助读者深入理解JavaScript在动态网页设计中的应用。这本书的代码库包含了书中各个章节的示例...

    JavaScript网页开发实例教程

    ### JavaScript网页开发实例教程知识点详解 #### 一、前言 在《JavaScript网页开发实例教程》这本资料中,作者通过一系列实际案例深入浅出地介绍了JavaScript在网页开发中的应用。该教程旨在帮助读者理解并掌握...

    Script\VBScript与JScript实例教程.rar

    《VBScript与JScript实例教程》是一份深入探讨两种脚本语言——VBScript和JScript的实践性教学资料。这两种语言在Web开发、系统管理自动化以及Microsoft Office文档自动化等方面广泛应用,是IT专业人士不可或缺的...

    【JavaScript源代码】JavaScript类型检测的方法实例教程.docx

    为了解决这个问题,开发者通常需要结合其他方法进行更精确的类型检查,例如使用`Array.isArray()`来判断数组,或使用`Object.prototype.toString.call()`。 3. `Object.prototype.toString.call()`: 这种方法通过...

    Java Script精彩实例教程

    "Java Script精彩实例教程"这本书无疑为想要深入理解和掌握JavaScript的读者提供了一个极好的学习资源。在这个教程中,作者通过一系列经典的实例,旨在帮助读者直观地理解JavaScript的基本概念、语法特性以及实际...

    Jackson将json string转为Object,org.json读取json数组的实例

    实例中提供的代码片段中,可以看到readValue方法的具体使用方法。首先创建了一个ObjectMapper的实例,然后使用readValue方法将JSON字符串转换为Map对象。通过键来访问Map对象中的数据,例如,map.get("id")可以获取...

    JavaScript精彩实例教程

    这个“JavaScript精彩实例教程”旨在帮助初学者和有一定基础的开发者深入理解JavaScript的核心概念,并通过丰富的实例来提升实战技能。 首先,JavaScript是解释型的,这意味着代码无需预编译,而是直接在浏览器中...

    js教程(实例教程1)

    2. **对象与数组**:JavaScript中的核心特性,如何创建、访问和操作对象属性,以及数组的常用方法,如push、pop、shift、unshift、slice等。 3. **DOM操作**:DOM(文档对象模型)是JavaScript与HTML页面交互的关键...

Global site tag (gtag.js) - Google Analytics