1、数组:批量管理多个数据的存储空间。

数组的作用:现实中,批量管理多个数据都是集中分组存放,良好的数据结构,可极大提高程序的执行效率!

优点:方便查找

2、创建数组:(4种方式)

(1)var 变量名=[]; 创建一个空数组
何时使用:暂时不知道数组中的元素内容时
(2)var 变量名=[值1,值2,...];
-->创建数组同时,初始化数组中的数据
(3)var 变量名=new Array(); 创建一个空数组
new:在window之外,创建一个新空间,保存多个数据
返回新空间的地址!

注意:Array:js中的内置数组类型,数组是应用类型的对象。

引用类型:对象不保存在变量本地,变量通过对象的地址使用对象。

  (4)var 变量名=new Array(值1,值2,...);

3、使用数组中每个元素的值:

数组的存储结构:数组中每个数据都是一个元素,每个元素都有唯一的下标,数组自动为每个元素生成序号,序号从0开始,自增1。

最后一个元素的下标=元素个数-1;

语法:数组变量名[下标];

注意:输出对象中不存在的元素:undefined;无论数组中实际存储几个元素,数组的长度只和最后一个下标有关,数组长度=最后一个下标+1。

4、索引数组和关联数组

索引数组:下标自动从0开始为每个元素顺序编号;

关联数组:可为每个元素自定义下标;

  创建关联数组(hash数组):

    var arr=[];

    arr.ename="Tom";

    arr.age=20;

    arr.sex="男";

关联数组能够“快速”、“精确”的查找数组中的一元素;

注意:JS中一切都是关联数组;关联数组下标没有规律;length无效。

5、二维数组:数组中的元素又引用了另一个数组对象。

使用:保存横行竖列、具有上下级包含的数据;

创建:eg

    var arr=[
        ["保定","唐山","秦皇岛"],
        ["郑州","洛阳","驻马店"]
        ];

6、遍历数组

(1)遍历索引数组:

    var arr=[];

    for(var i=0;i<arr.length;i++){……}

(2)遍历关联数组:

    var arr=[];

    for(var key in arr){

    arr[key]=value;

    }

(3)遍历二维数组:

    var arr=[ [] ,[] ];

    for(var row=0;row=arr.length;row++){

     for(var col=0;col=arr[row].length;col++){

      arr[row][col];
      }

    }

7、数组API

(1)、arr.sort([比较器函数对象]);

比较器函数:compare=function(a,b){return a-b}

      arr.sort(comprare);

(2)、栈和队列:JS中没有专门的栈和队列的类型,都是用数组模拟出来

栈:一端封闭,只能从另一端进出的数组

使用:数组只能从一端进出

  末尾入栈:arr.push(新值,……);

  末尾出栈:var e=arr.pop();

  从头入栈:arr.unshift();

  从头出栈:var e=arr.shift();

(3)、将数组转化为字符串

  arr.toString();输出格式固定:中括号包裹,逗号分隔

  arr.join([“分隔符”]):默认等同于toString();

(4)、拼接和截取子数组

  var newArr=arr.contact(另一个数组,值1,值2);

  原数组不变,返回拼接后新数组对象!

(5)、截取字数组

 var subArr=arr.slice(stari,end[i+1]);//截取arr数组中从starti位置开始,到endi位置结束的元素组成新的子数组返回。含头不含尾。

 splice:插入:arr.splice(插入位置,0,新值1,新值2……);

    删除:arr.splice(开始位置,删除个数);

    替换:arr.splice(开始位置,删除个数,新值1,……);

(6)、翻转:arr.reverse();

8、排队抢火车票(例子)

var tickets=10;

var people=[];

for(var i=0;i<10;i++){

  people.push("乘客"+i);

}

console.log(people);

while(tickets>0){

  var p=people.shift();

  tickets--;

  console.log(p+"抢到了;"+"还剩下"+tickets+"张票");

}

console.log(people+"没抢到票");

9、十进制转化为二进制

/*十进制整数转二进制:
十进制反复/2,记录每次的余数
直到商=1时,将商和最后一次余数都计入结果
将所有余数颠倒,就是二进制表示
*/

function toBin(n){

  var reslut=[];

  while(n>1){

    reslut.push(n%2);

    n=parseInt(n/2);

  }

  reslut.push(1);

  return reslut.reverse().join(' ');

}

var n=110;

console.log(tobin(n));

console.log(n.toString(2));//对比

 

 

数组Array、数组API的更多相关文章

  1. JavaScript的json和Array及Array数组的使用方法

    1.关于json JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于ECMAScript的一个子集.也可以称为数据集和数组类似,能够存数据! //Ar ...

  2. C#中数组Array、ArrayList、泛型List<T>的比较

    在C#中数组Array,ArrayList,泛型List都能够存储一组对象,但是在开发中根本不知道用哪个性能最高,下面我们慢慢分析分析. 一.数组Array 数组是一个存储相同类型元素的固定大小的顺序 ...

  3. JavaScript中对数组和数组API的认识

    JavaScript中对数组和数组API的认识 一.数组概念: 数组是JavaScript中的一类特殊的对象,用一对中括号“[]”表示,用来在单个的变量中存储多个值.在数组中,每个值都有一个对应的不重 ...

  4. Java一维数组二维数组详解API

    所谓数组,是有序的元素序列. 若将有限个类型相同的变量的集合命名,那么这个名称为数组名.组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量.用于区分数组的各个元素的数字编号称为下标 ...

  5. 【Java】数组Array

    Java基础复习之:数组 简介 数组(Array):多个相同数据类型按照一定顺序排列的集合,并使用一个名字命名,通过编号的方式对这些数据进行统一管理 一维数组 一维数组的声明与初始化 int[] id ...

  6. 了解PHP中的Array数组和foreach

    1. 了解数组 PHP 中的数组实际上是一个有序映射.映射是一种把 values 关联到 keys 的类型.详细的解释可参见:PHP.net中的Array数组    . 2.例子:一般的数组 这里,我 ...

  7. Swift3 - String 字符串、Array 数组、Dictionary 字典的使用

    Swift相关知识,本随笔为 字符串.数组.字典的简单使用,有理解.使用错误的地方望能指正. ///************************************************** ...

  8. Java ArrayList和Vector、LinkedList与ArrayList、数组(Array)和列表集合(ArrayList)的区别

    ArrayList和Vector的区别ArrayList与Vector主要从二方面来说.  一.同步性:   Vector是线程安全的,也就是说是同步的,而ArrayList是线程序不安全的,不是同步 ...

  9. go 数组(array)、切片(slice)、map、结构体(struct)

    一 数组(array) go语言中的数组是固定长度的.使用前必须指定数组长度. go语言中数组是值类型.如果将数组赋值给另一个数组或者方法中参数使用都是复制一份,方法中使用可以使用指针传递地址. 声明 ...

随机推荐

  1. 基于JDK1.8的ConcurrentHashMap分析

    之前看过ConcurrentHashMap的分析,感觉也了解的七七八八了.但昨晚接到了面试,让我把所知道的ConcurrentHashMap全部说出来. 然后我结结巴巴,然后应该毫无意外的话就G了,今 ...

  2. docker容器安装及使用技巧

    关于docker前言 A)首先是关于虚拟化 虚拟化我们可以简单的理解为一种资源管理方式.有如下几种虚拟化的方式: 1.完全虚拟化:对底层硬件实现完全的虚拟.例如:Vmware Workstation ...

  3. angular4升级angular5问题记录之No NgModule metadata found for 'AppModule'

    在将项目从angular4升级到angular5的过程中,出现No NgModule metadata found for 'AppModule'问题,网上查找答案将app.module.ts进行再次 ...

  4. Git版本回退和撤销修改的区别

    在阅读廖雪峰git教程时,对版本回退和暂存区撤销修改没太看懂,所以自己测试了一下. 版本回退: git reset --hard HEAD 这个命令用于版本回退,就是将已提交的版本覆盖本地工作区的内容 ...

  5. PAT甲级 1004 树

    思路:直接遍历整棵树判定每个结点是否有孩子,没有则把当前高度的叶子节点数加一. AC代码 #include <stdio.h> #include <string.h> #inc ...

  6. hihoCoder 1051 : 补提交卡 枚举

    思路:预处理cnt(i)表示前i个数中有多少天需要补提交卡,枚举各个连续区间,区间[j, i]中需要补提交卡的天数是cnt(i) - cnt(j-1),判断m是否大于等于cnt(i) - cnt(j- ...

  7. soj3129: windy和水星 -- 水星数学家 2

    注意int的范围:-2147483648-2147483647 如果输入会出现溢出,这题应该就是卡的这里.其使用long long就不用考虑这个. 加深:如果输入的数是很多位,直接当做字符串处理即可. ...

  8. AES-256加密解密

    /// <summary> /// AES-256加密 /// </summary> /// <param name="toEncrypt">& ...

  9. 1_Two Sum --LeetCode

    原题如下: 思路:将nums放到一个map<int,int>中,其中,键是nums中元素,值对应其下标.然后遍历nums,取nums中一个值nums[i],接着用target减去它,最后再 ...

  10. 利用Caffe训练模型(solver、deploy、train_val)+python使用已训练模型

    本文部分内容来源于CDA深度学习实战课堂,由唐宇迪老师授课 如果你企图用CPU来训练模型,那么你就疯了- 训练模型中,最耗时的因素是图像大小size,一般227*227用CPU来训练的话,训练1万次可 ...