数组

一、定义

1.数组的文字定义

广义上说,数组是相同类型数据的集合。但是对于强类型语言和弱类型语言来说其特点是不一样的。强类型语言数组和集合有以下特点。

数组强类型语言:1.数组里面只能存放相同数据类型的数; 2.定义数组的时候需要制定一个长度(可以存放的元素数量);3.内存空间是连续的;

集合强类型语言:1.可以存放任意类型的数据;2.定义的时候不需要指定长度;3.内存空间不连续;

相对于强类型语言来说,弱类型语言数组的特点更像是集合。所以称作弱类型集合;有如下特点。

 JS数组:1.可以存放任意类型数据;2.定义时候不需要指定长度;

2.数组定义方式

① 使用关键字 var attr = Array()

关键字Array代表数组,var attr = Array();这句话就是定义一个数组,数组的名字叫做attr。但是是一个空的数组。如果在()加上一些数字或者字符,就成为一个有内容的数组,例如var attr = Array(1,3.14,"aa"),1,3.14,"aa"就是数组的3个元素,各元素用“,”隔开,字符串要加“”。3个元素的索引分别为0,1,2(索引从0开始)。如果要取数组里面的元素,要用alert(attr[2]);,意思是输出attr数组里面的索引为2的元素,输出的结果就是“aa”。

定义和取值代码为:

  1. var attr = Array(1,3.14,"aa");
  2. alertattr[2]);

② 使用关键字 var attr = Array()

和第一种定义方式不同,第一种是在()直接给元素,而此种方式是在()直接给数组的长度。例如var attr = Array(5)就代表这个数组的长度是5(数组里面最多放5个元素)。attr[]可以取值,也可以赋值。如果直接拿来用,就是取值。如果放在等号的左侧,那就是赋值。

例如:

  1. var attr = Array(5);
  2. attr[1] = aa
  3. alertattr[1]); // 输出的结果也是“aa”

③ 使用方括号 var attr= [];

第三种是去掉Array关键字,直接在等号后面写[],然后再在[]里面写各元素。var attr = [1,3.14,"aa"];,这样写也是加入了3个元素

  例如:

  1. var attr = [1,3.14,"aa"];
  2. alertattr[1]); 输出结果也是“aa

上面三种定义方式都可使用,正常情况下使用方括号方法比较好,较为简单。数组定义完以后,如果想操作里面的元素,取值和赋值都是用attr[],取里面的索引号。在弱类型语言中,给定数组的长度是没有用的,可以随时添加或删除元素。

  例如:

  1. var attr = [1,3.14,"aa"]; //此数组的长度为3
  2.  
  3. attr[3] = bb";//添加了新的元素,索引号为3.
  4.  
  5. alert(attr[3]); //输出索引号为3的元素。输出结果为“bb”。

二、数组的属性

1.  length

attr.length,length属性代表数组的长度(数组内元素的数量)。

示例:

  1. var attr = [1,3.14,"aa"];
  2. ttr[3] = bb”;
  3. alertattr.length); // 输出的是数组的长度,输出结果是4。

2. push

往数组里面追加元素,追加元素的方式有很多,直接写入attr[4] = “cc”;就是追加元素的一种。有一种方法是attr.push();,()内就是要追加的元素。

示例:

  1. var attr = [1,3.14,"aa"];
  2. attr[3] = bb”;
  3. attr[4] = cc”;
  4. attr.push(“dd”);
  5. alertattr.length); //在原来的基础上增加了2个新的元素,输出的length长度结果为6。

三、数组的遍历

数组的遍历意思是数组里面可能存了n个数据,在使用这一个数组时,要使用到里面所有的数据,所以就要把里面所有的元素都取一遍。遍历的方式有以下几种:

1.for循环

示例:

  1. var attr = [1,3.14,"aa"];
  2. attr[3] = bb”;
  3. attr[4] = cc”;
  4. attr.push(“dd”);
  5. for(var i=0; i<attr.length;i++) i<attr.length表示小于元素的数量
  6. {
  7. alertattr[i]); //输出结果是1,3.14,aa,bb,cc,dd
  8. }

使用for循环时一定要控制住循环的次数,因为如果次数多了程序就会报错或崩溃。如果上面的代码中 i<=attr.length,1,3.14,aa,bb,cc,dd输出完以后就会出现undefind。

2.foreach

在JS里面没有 foreach这个词,JS里面把foreach和for合在一起了。在其它语言里可以写 foreach,JS里面写for。

foreach的写法为for(var a in attr),数组的名字是attr

示例:

  1. for(var a in attr) //取数组attr里面的元素。取1个,循环;再取1个,循环;直至把所有的元素取完。
  2. {
  3. alert(attr[a]);
  4. }
  5. //另外:如果上面的代码输出结果改为alert(a);,输出的就是元素的索引,0,1,2,3,.....

3.数组遍历举例

例子1:输入10个成绩,求总分,最高分,最低分。

总分:

  1. var attr =[89,80,76,49,90,25,85,76,59,40];//10个成绩
  2. var sum = 0;]//总分赋值0
  3. for(var i=0; i<attr.length;i++)//循环条件
  4. {
  5. sum+=attr[i];//循环
  6. }
  7. alert(sum);//输出总分
  8. //最高分和最低分:
  9.  
  10. var attr =[89,80,76,49,90,25,85,76,59,40];//10个成绩
  11. var zg = 0;//最高分赋值0
  12. var zd = 0;// 最低分赋值0
  13. for(var i=0; i<attr.length;i++) //循环条件
  14. {
  15. if(attr[i]>zg)//条件判断
  16. {
  17. zg = attr[i];// 赋值
  18. }
  19. }
  20. alert(zg);//输出最高分
  21. var zd = zg;//给最低分赋值
  22. for(var i=0; i<attr.length;i++)//循环条件
  23. {
  24. if(attr[i]<zd)//条件判断
  25. {
  26. zd = attr[i];//赋值
  27. }
  28. }
  29. alert(zd);//输出最低分

示例2:添加数据时去重

  1. var attr = [2,5,10,16,27];//5个元素的数组
  2. var sj = 10;//输入新的元素
  3. var cf = true;//布尔型数据,默认是true
  4. for(var i=0;i<attr.length;i++)循环条件
  5. {
  6. if(sj == attr[i])//判断数组里面有没有和新的元素相等的元素
  7.   {
  8.   cf = false;//如果有重复值,把false赋值给cf
  9.    break;//终止循环
  10.   }
  11. }
  12. if(cf)//if(cf=true)可以直接用,意思是如果没有重复值
  13. {
  14. attr.push(sj);//在数组中加新的元素
  15. }
  16. else//如果有重复的元素
  17. {
  18. alert("有重复值");//输出“有重复值”
  19. alert(attr.length);//输出数组的长度(索引的数量)。
  20. }

9月19日上午JavaScript数组的更多相关文章

  1. 9月19日下午JavaScript数组冒泡排列和二分法

    数组 一.冒泡排列 对数组attr = [1,8,6,4,5,3,7,2,9]进行由大到小排列,用冒泡排列的方法排列时,会对数组进行比较互换.如果前一个数字较大,这2个元素排列方式不变,如果后一个元素 ...

  2. 10月23日上午PHP数组

    正则表达式 1.替换 $s = "hello5world"; $s = preg_replace("/\d/","#",$s); echo ...

  3. 9月20日上午JavaScript函数

    函数 一.  函数定义 函数又叫方法,在程序里面函数是用来执行某些特定功能的代码.为了减少重复使用代码,可以把特定功能的代码做成函数,需要使用时拿出来调用.alert();就是一个很常见的.简单的函数 ...

  4. Python array,list,dataframe索引切片操作 2016年07月19日——智浪文档

    array,list,dataframe索引切片操作 2016年07月19日——智浪文档 list,一维,二维array,datafrme,loc.iloc.ix的简单探讨 Numpy数组的索引和切片 ...

  5. 2016年12月19日 星期一 --出埃及记 Exodus 21:14

    2016年12月19日 星期一 --出埃及记 Exodus 21:14 But if a man schemes and kills another man deliberately, take hi ...

  6. 2016年11月19日 星期六 --出埃及记 Exodus 20:10

    2016年11月19日 星期六 --出埃及记 Exodus 20:10 but the seventh day is a Sabbath to the LORD your God. On it you ...

  7. 2016年10月19日 星期三 --出埃及记 Exodus 19:3

    2016年10月19日 星期三 --出埃及记 Exodus 19:3 Then Moses went up to God, and the LORD called to him from the mo ...

  8. 7月19日Docker&Kubernetes技术沙龙总结 - DockOne.io

    7月19日Docker&Kubernetes技术沙龙总结 - DockOne.io undefined

  9. 成都Uber优步司机奖励政策(4月19日)

    滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...

随机推荐

  1. [团队项目]Github生成燃尽图的方式

    经过一晚上折腾,终于算是把linux上成功生成了我们团队项目的燃尽图,效果还是不错,在过程中又发现了另一种生成燃尽图的方式,也是基于一个开源项目. 1.准备: 首先你的项目一定要有milestone. ...

  2. 1118ALTER TABLE tabname DISCARD TABLESPACE快速导入数据利用表空间

    -- 快速导入数据如果你有.ibd文件的一个干净的备份,你可以按如下操作从被起源的地方恢复它到MySQL安装中:相当快速 1. 发出这个ALTER TABLE语句: 2. ALTER TABLE tb ...

  3. 导入dmp文件时的注意事项

    来源于:http://bbs.csdn.net/topics/350167817 --1表空间 CREATE TABLESPACE newjw DATAFILE 'E:\oracle_data\new ...

  4. Entity Framework Code First (七)空间数据类型 Spatial Data Types

    声明:本文针对 EF5+, Visual Studio 2012+ 空间数据类型(Spatial Data Types)是在 EF5 中引入的,空间数据类型表现有两种: Geography (地理学上 ...

  5. 使用express4.X + jade + mongoose + underscore搭建个人电影网站

    (-。-;), 周末过得真是快啊,  很久以前就看到imooc上有个搭建个人电影网站一期 ,二期的视频, 这两周宅家里撸玩没事干, 我也学着搭了一个, 这些东西都是基础, 只要花点时间很好学的, no ...

  6. lucene-Field.Store解析

    本文主要内容装载这里 Store 三种形态 COMPRESS:压缩保存.用于长文本或二进制数据 (后期高版本舍弃了) YES:保存 NO:不保存 具体案例 package demo.first; im ...

  7. wow.js使用方法

    近日,在做项目中,需要做到滚动条滑到某个位置时,才能显示动画,网上查询到有个wow.js可以达到要求,现在把使用方法做如下总结: wow.js演示地址 wow.js的github地址 使用方法真是超简 ...

  8. 【Codeforces 707A】Brain's Photos 水题

    黑白灰都是#Black&White #include <cstdio> int n,m; int main() { scanf("%d%d",&n,&a ...

  9. perl push an array to hash

    #!/usr/bin/perl use strict; use warnings; use Data::Dumper; my @array=qw /fm1 fm2 fm3 fm4 fm5 fm6/; ...

  10. 关于 UINavigationController 的一些知识

    1.在 UINavigationController 中,添加一个UITextView,虽然设置self.frame = textView.bounds(从0.0开始),但是系统会自动设置一个cont ...