js数组

和var i=1;这样的简单存储一样是js中的一种数据结构,是专门用来存储多个数据的一种数据结构。

摘:数组是一组数据的集合,其表现形式就是内存中的一段连续的内存地址,数组名称其实就是连续内存地址的首地址。

数组也是分为强类型和弱类型的:

强类型语言数组:1.内容是连续的 2.指定数组的时候要给一个长度 3.要规定存储数据类型

弱类型语言数组:可以不连续,不用指定长度,可以存储任何类型长度

js数组是弱类型数组。

js数组的定义方式:

    //数组的定义方式
    //第一种
    var arr = new Array();
    arr[0]=1;
    arr[1]=2;
    arr[2]=3;
    //第二种
    var arr = new Array(1,2,3,4,5);
    //第三种
    var arr = new Array();
    arr.push(1);
    arr.push(2);
    //第四种
    var arr = [1,2,3,4,5];

arr[]是数组的索引,数组的索引是从0开始的。

arr.push();是数组的一种方法,用来向数组添加数据

arr.length是数组的方法,代表数组的长度,表示数组下有几个元素

数组名.属性名

数组名.方法名()

JS数组中可以存储任意类型的数据

    var arr = new Array();
    arr[0]=1;
    arr[1]="hello";

二维数组:

    //二维组数
    var arr = new Array(
        new Array(11,12,13,14,15),
        new Array(21,22,23,24,25),
        new Array(31,32,33,34,35)
    );

数组可以作为数组的值,数组中的值可以是数组,这样叫做二维数组

二维数组的索引是arr[][]

遍历数组

    //遍历数组
    //1.for循环
    for(var i=0;i<arr.length;i++){
        alert(arr[i]);
    }

    //2.foreach循环
    for(var a in arr){
        alert(arr[a]);
    }

需要注意的是不能用 for(var i=1;i<=arr.length;i++),因为数组索引是从0开始的。

可以使用for...in语句实现对一个数组的所有元素的遍历,数组中有几个元素,for..in语句就循环执行多少次。

下面用两个例子试一下:

输入10个成绩,求总分,最高,最低

    var arr=new Array(67,45,56,12,90,98,23,43,56,99,97);
    var g=0;
    var d=arr[0];//定义最小开始时等于第一个数
    var z=0;
    for(var i=0;i<arr.length;i++){
        z=z+arr[i]; //总分要在外边不能在里边
        if(arr[i]>g){
            g=arr[i];
        }else{
            if(arr[i]<=d){
                d=arr[i];
            }
        }
    }
    alert(z+","+g+","+d);

这里的思路是:

首先定义出数组,最高分g,最低分d开始时等于数组第一个元素,总分z

然后循环中,首先总分加数组元素

然后判断这个数组元素是否大于最高分,如果是则将这个分数赋给g,如果不是则判断是否小于最低分d,如果是则将此值赋给d

这里遇到的问题:找出最高分一开始就实现了,问题出在总分和最低分,计算总分要写在for循环下而不能写在判断中,否则得出的是高分的和。

最低分的要点在于开始赋值,如果和总分高分一样初始值为0,则第二个判断中,低分会一直为0,所以要把数组的第一个值赋给d,这样才能判断计算

添加数据时去重,下代码仅能输入一个数据

    var arr=Array(2,1,11,2,31);
    var s=prompt("请输入学号");
    for(var i=0;i<arr.length;i++){
        if(s in arr){
            break;
        }else{
            arr.push(s);
            break;
        }
    }
    alert(arr);

这里的思路是

首先定义出数组,和用户输入的内容s

然后用for循环遍历数据,在for循环中使用if判断,如果s 在数组中,跳出,如果s不在数组中,写入数据

拓展:

数组里的索引叫做(key),数组里存的值叫做(value),他们是成对存在的,叫做键值对

摘:

JS中符号含义:

()表示函数执行

[]表示语法模拟,表示模拟Array类的实例(=new Array())

{}表示语法模拟,表示模拟Object类的实例(=new Object())

//表示语法模拟(正则对象),表示模拟RegExp类的实例(=new RegExp())

JavaScript数组基础及实例的更多相关文章

  1. JavaScript数组基础编程题归纳

    之前的随笔"JavaScript中数组类型的属性和方法"中有介绍很多数组类型的方法,但都是一些理论.最近在练习在线编程题,发现自己还是习惯于用常规的循环来答题,对于数组的方法的使用 ...

  2. JavaScript 数组基础知识

    // Array 类型: // 检测数组: // console.log(myarr instanceof Array) //true // toString()方法会返回由数组中每个值的字符串形式拼 ...

  3. JavaScript数组(二)实例

    一.Js 数组示例常用操作. $(function () { Javascript数组学习 var nums = new Array([10], [5],[ 8], [2], [3]); 数组反转 n ...

  4. JavaScript RegExp 基础详谈

    前言: 正则对于一个码农来说是最基础的了,而且在博客园中,发表关于讲解正则表达式的技术文章,更是数不胜数,各有各的优点,但是就是这种很基础的东西,如果我们不去真正仔细研究.学习.掌握,而是抱着需要的时 ...

  5. JavaScript学习基础部分

    JavaScript学习基础 一.简介 1.JavaScript 是因特网上最流行的脚本语言,并且可在所有主要的浏览器中运行,比方说 Internet Explorer. Mozilla.Firefo ...

  6. javascript 闭包基础分享

    javascript 闭包基础分享 闭包向来给包括JavaScript程序员在内的程序员以神秘,高深的感觉,事实上,闭包的概念在函数式编程语言中算不上是难以理解的知识.如果对作用域,函数为独立的对象这 ...

  7. JavaScript 数组基本操作

    简介 数组操作无论是在JavaScript中还是在其他语言中都是很常见.经常会用到的,现在我把JavaScript 数组基本操作整理一下,供大家参考学习.里边包含我自己的见解以及案例,希望能够帮助大家 ...

  8. JavaScript的基础学习

    由js和python想到的: 弱类型语言 js 中的数据在进行算数运算时,会自动转换类型强类型语言 变量的值的数据类型一旦确定,使用时不能改变 动态语言:编译时不知道数据类型,只有在执行时才知道数据类 ...

  9. 三丶JavaScript 的基础学习(一)

      知识预览 BOM对象 DOM对象(DHTML) 8 实例练习 JavaScript概述 JavaScript的历史 1992年Nombas开发出C-minus-minus(C--)的嵌入式脚本语言 ...

随机推荐

  1. 关于Content-Type的问题

    今天我在编写html表单提交到 php时,出现了一个很奇怪的现象. 为了让php文件的字符编码与html一致,我在php文件加了一句 header("Content-Type:html/te ...

  2. PHP怎么打开或者关闭文件?

    什么是文件处理? 文件处理包括读取,关闭,重写等.掌握文件的处理需要读者理清思路,掌握好文件处理的关键步骤和常用函数,那么就可以运用自如了!感兴趣的请移步php文件处理专题. 比如,访问一个文件需要 ...

  3. python结合shell脚本实现简单的日常集中巡检

    一.环境配置 1.说明 下面的安装过程适合开发.调试Python脚本,如果是直接使用的话没有这么复杂.为了防止由于版本问题导致安装问题,请到http://pan.baidu.com/s/1nt1NKS ...

  4. javascript ES3小测试

    一.温故知新 做做题,总是能有温故知新的体验.这套题是2010年的了,比较老了, http://perfectionkills.com/  还有一套http://perfectionkills.com ...

  5. SDN学习之RYU源码安装

    近些天开始接触SDN,即软件定义网络的学习,由于是初学者,想通过写博客来分享自己对sdn学习中所使用的ryu以及mininet仿真软件. Mininet源码安装: 尽管网上对mininet的安装教程很 ...

  6. JS常用方法【私房菜-笔记】-持续整理中

    //记录一下前端开发中 JS常用的方法等,持续收集整理中 ---------------------------------------------------------- //处理键盘事件 禁止后 ...

  7. 为程序猿正名,MM们,你们为什么要找一个程序猿男票?【原创】

    前言 免责声明:这篇文章关于什么?六一儿童节马上就要到了,作为一个前端攻城师,自我感觉效率还可以,老早已把任务搞完,页面布局和前端编码高效按时交付,呵呵.趁有时间,写写文章娱乐一下.MM们,请不要拿起 ...

  8. 谈谈RDD、DataFrame、Dataset的区别和各自的优势

    在spark中,RDD.DataFrame.Dataset是最常用的数据类型,本博文给出笔者在使用的过程中体会到的区别和各自的优势 共性: 1.RDD.DataFrame.Dataset全都是spar ...

  9. hdu 4552 怪盗基德的挑战书

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4552 思路: 其实可以用KMP+DP解决 我这里给出后缀数组的解题方法 思路: 初始化ans=n(n为 ...

  10. 【19道XSS题目】不服来战!

    记得第一次接触xss这个概念是在高中,那个时候和一个好基友通过黑客X档案和黑客手册.第一次接触到了除了游戏以外的电脑知识,然后知道了,原来电脑除了玩游戏还可以搞这些,从此两人一发不可收拾的爱上了玩黑这 ...