1.概念

    a)作用--用于保存多个数据,便于对数据的使用
b)数组元素--数组中的数据
c)索引--数组中的元素按照下标(数值)的方式排列(从0 开始),依次递增(也有可能是字符串的类型--不用)
d)长度--数组中的元素个数--length

​ 2.创建方式

    a)构造函数创建方式 var arr = new Array (1,2,3);
b)字面量方式创建 var arr = [1,2,3];
c)获取指定元素 arr[index]
d)设置元素 arr[index]=要设置的值

​ 3.length

    a)与index的关系-index= length-1
b)length > 元素个数 没有意义 --会产生误导
c)length < 元素个数 后面多出的元素会被删除
d)清空数组 arr.length-0;--修改数组的元素值
arr=[];--更换为新的数组

​ 4.数组遍历

    a)使用for循环
b)反向遍历 for(var= arr.length-1; i >=0;i-- ){ 从后往前取值 };
    练习:
1)将0-99之间的数放入到数组中
            var arr=[];
for (var i = 0 ; i <100,i++){
arr[i]=i;
}
console.log(arr);
        2)将1-100所有数放入到数组中
            var arr= [ ];
for (var i = 0 ; i<=100;i++){
arr[i-1]=i;//索引默认从0 开始,-1就是第一个索引是1
arr[arr.length]=i;
}
console.log(arr)
        3)将1-100之间的所有偶数放入到数组中
          var arr = [ ];
for (var i = 1 ; i <=100 ; i++){
if (i%2===0){
arr[arr.length]=i;
}
}
console.log(arr);
        4)求一组数中的最大值和最小值,以及所在位置(索引值)
                 var arr= [ 1,5,4,33,6,67,999];
var max=arr[0];//声明变量
var min =arr[0];
var maxIndex=0;//声明索引值
var minIndex=0;
for (var i = 0 ; i <arr.length;i++){
if (max<arr[i]){
max = arr[i];
maxIndex=i;//索引值=i
}
if (min>arr[i]){
min=arr[i];
minIndex=i;
}
}
console.log(max, maxIndex);
console.log(min, minIndex);
        5)将字符串数组用|或其他符号分割
              var arr = ["abc","asd","asdqwe"];
var str =[];
var fuhao="-";
for (var i = 0 ; i < arr.length;i++){
str=str+fuhao+arr[i];
}
console.log(str);

5.翻转数组

     a)反向遍历
        var arr=["a","b","c"];
var resultArr=[];
for (var i = arr.length-1;i>=0;i++){
resultArr[resultARR.length]=arr[i];
}
console.log(arr);
    b)直接在原有数组的基础上进行翻转
         var arr=["a","b","c"];
var temp;
for (var i = 0 ; i<parseInt(arr.length/2-1);i++){
temp=arr[i];
arr[i]=arr[arr.length-1-i];
arr[arr.length-1-i]=temp;
}
console.log(arr);

​ 6.冒泡排序

	 a)基本的冒泡排序
           var arr = [1,2,6,4,9,2];
var j,temp;
for(var i = 0 ; i < arr.length-1;i++){
for (j = 0 ; j <arr.length -i -1;j++){
if (arr[j]>arr[j+1]){
temp = arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
console.log(arr);
    b)冒泡排序的优化---假设成立
1)找到不确定的点,设置假设条件
2)找到可以让假设失败的条件,设置flag=false
3)验证flag的结果
            var arr = [1,2,6,4,9,2];
var j,temp,flag;
for(var i = 0 ; i < arr.length-1;i++){
//假设是真
flag=true;
for (j = 0 ; j <arr.length -i -1;j++){
if (arr[j]>arr[j+1]){
temp = arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
//假设不成立
flag =false;
}
}
//是真--成立--跳出
if (true){
break;
}
}
console.log(arr);

​ 7.数组去重

        a)假设成立法
     
            var arr = [1,2,6,4,9,2];
var j,temp,flag;
for(var i = 0 ; i < arr.length-1;i++){
//假设是真
flag=true;
for (j = 0 ; j <arr.length -i -1;j++){
if (arr[j]>arr[j+1]){
temp = arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
//假设不成立
flag =false;
}
}
//是真--成立--跳出
if (true){
break;
}
}
console.log(arr);
    b)计数法
     
         var arr= [1,1,1,12,2,2,234,346,5,6,78,0];
var resultArr=[];
resultArr[0]=arr[0];
var j ,count;//设置计数
for(var i = 0 ; i <arr.length;i++){
count=0;//针对arr[i]设置新的计数
for(j = 0 ; j <resultArr.length;j++){
if(resultArr[j]===arr[i]){//相等不执行
count++;
break;
}
}
if(count===0){检测count的值
resultArr[resultArr.length]=arr[i];
}
}
console.log(resultArr);
    c)循环特性--利用循环特性
      //数组去重:有一个数据重复的数组,我们需要通过处理,得到一个不重复的数组
     
         var arr = [1, 1, 2, 3, 3, 2, 4, 5, 5, 4, 3, 2, 1];
//1 创建一个结果数组
//结果数组一定不能重复
var resultArr = [];
resultArr[0] = arr[0];
var j;
//利用循环特性的解题方式实际上通过判断循环变量和数组长度之间的关系,去检测循环的结束方式
for (var i = 1; i < arr.length; i++) {
for (j = 0; j < resultArr.length; j++) {
if (arr[i] === resultArr[j]) {
//如果找到相等的项,执行break;
break;
}
}
//在内循环结束后,检测j和resultArr.length的关系
if (j === resultArr.length) {
//说明循环正常结束,说明没有执行过跳出,意味着没有找到相等的元素,进行放入操作
resultArr[resultArr.length] = arr[i];
}
}
console.log(resultArr);

​ 8.数组的类型检测--复杂数据类型

     a)Array.isArray([1,2,3]); 返回值--布尔  数组==true  IE9以下不支持
b)[1, 2, 3] instanceof Array
c)Object.prototype.toString.call([1,2,3]);

​ 9.简单数据类型与复杂数据类型的区别

    a)保存数据个数上不同
简单--一个值
复杂--多个值
b)在内存中的保存方式
简单--具体值--值类型--保存于栈中
复杂--具体值的指向(箭头)--引用类型--保存于堆总(初学者)
c)进行复制操作是,结果不同
简单--复制前后无关联 复制粘贴
复制--复杂前后的结果是一样的 设立快捷方式

​ 10.二维数组--数组中还有数组

    var arr = [1,2,3,[4,5,6]];
遍历:
       var j ,temp;
for (var i = 0 ; i <arr.length ; i ++){
temp = arr[i];//进行保存,方便下次使用
if (temp instanceof Array){//检测是否是数组
for ( j = 0 ; j <temp.length ; j ++){
console.log(temp[j]);//是数组,打印出来
}
}else{
console.log(temp);不是数组,直接打印
}
}

对于,数组的大概也就是这么多.

从写博的这段时间,越来越纠结,每一句话都要去想好久,自己写的对不对,大家看的是否可以理解,我归纳的是否有遗漏等..

但是,这段时间却是成长了很多.我会慢慢地去完善,改善自己的.

PS:2018-01-20,这天,我在北京798熊猫慢递,写了一封给某某人的信,我希望这封信永远不会被寄出,这个人永远不会看到信..安可

JaveScript数组(JS知识点归纳五)的更多相关文章

  1. JaveScript运算符(JS知识点归纳三)

    JaveScript中有许多的运算符,在这里就只说明一些需要注意的. 01 一元运算符 一元:指的是参与运算的操作数只有一个 最经常使用的是++   -- 计算规则: ++/-- 前置于操作数的时候 ...

  2. JaveScript函数(JS知识点归纳六)

    1.函数的基本使用 a)作用:代码的复用,灵活性比较强 b)声明方式:function 名 (形参){函数体} c)调用: 名(实参); d)封装函数--书写一个函数的结构,而且放入一些功能,在需要使 ...

  3. JaveScript对象(JS知识点归纳七)

    1.JS中的对象表示的是一个具体的事物. a)静态的特征=>对象的属性 b)动态的行为=>对象的方法=>保存的值==>函数 2.对象的创建方式 a)构造函数的创建方式 ``` ...

  4. JaveScript简单数据类型(JS知识点归纳二)

    JS中的简单数据类型有五种 : --> string --> number -->boolean --> null -->undefined 数据类型的检测 :typeo ...

  5. JaveScript内置对象(JS知识点归纳八)

    1)JS自身提供的方式 用于对数据进行简便的操作,根据方法可以操作的数据类型不同,形成了不同的对象--内置对象 2)数组 ​ a)基本操作方法--对数组进行修改 从数组最后进行操作 1)数组.push ...

  6. JaveScript变量的简介及其变量的简单使用(JS知识点归纳一)

    变量简介 "变量是一个容器" 为什么要有变量? 程序的执行过程中,会使用到许多的数据(用户输入的内容,动态效果的运动数据等),当这些数据需要重复在多个地方使用的时候,就需要一个容器 ...

  7. JaveScript流程控制(JS知识点归纳四)

    01 流程控制 顺序结构: 程序的默认执行方式 条件判断语句:也称之为分支结构,选择结构:如果程序要执行的代码出现了多种情况需要使用 循环结构:当代码需要多次重复执行多次时,使用 02 条件判断语句 ...

  8. js 数组的常用方法归纳

    数组的常用方法归纳 slice(start,end) 传参:start代表从哪里开始截取,end代表截取结束的地方 var a = [1,2,3]a.slice(1);//[2,3] pop() 可以 ...

  9. JS知识点整理(二)

    前言 这是对平时的一些读书笔记和理解进行整理的第二部分,第一部分请前往:JS知识点整理(一).本文包含一些易混淆.遗漏的知识点,也会配上一些例子,也许不是很完整,也许还会有点杂,但也许会有你需要的,后 ...

随机推荐

  1. 【功能代码】---3 JS判断字符串是否包含某个字符串

    JS判断字符串是否包含某个字符串 var str ="abc"; if(str.indexOf("bc")>-1){ alert('str中包含bc字符串 ...

  2. 浅谈Unix I/O模型

    关于I/O模型的文章比较多,参考多篇后理解上仍然不太满意,终需自己整理一次,也是编写高吞吐量高性能网络接口模块的基础.这里所说的主要针对网络I/O,近几年面对越来越大的用户请求量,如何优化这些步骤直接 ...

  3. 指针变量的*p,p以及&p的区别

    23/7/2017  决定夯实基础,回顾指针的知识点,该博文转载于CSDN博主百家晓东,小部分修改,外加编译图引证 正文如下: 以下面的情况说明: int a = 5; int* p = &a ...

  4. 为什么epoll会那么高效

    参考(原文简直超赞):https://zhidao.baidu.com/question/687563051895364284.html下面是我结合原文写的,为了便于自己理解:关于阻塞和非阻塞的理解可 ...

  5. JDBC 程序实例小练习

    JDBC 程序实例问题 编程实现如下功能:在数据库中建立一个表,表名为student,其结构为学号.姓名.性别.年龄.英语.JavaSE程序设计.初级日语.总分,在表中输入多条记录. 学生的总分信息, ...

  6. jsDOM编程-小球在盒子里来回撞击

    首先写一个小页面:页面需要一个div 这个div就是盒子,然后在div里在包含一个子div 这个子div就包含一张小球的图片 代码: <!doctype html> <html> ...

  7. Confluence5.4.4迁移至6.3.1

    1.数据备份 服务器查看: 2.安装破解文件及安装包至服务器 3.停止旧版本并启动安装 4.访问8090端口开始安装 5.获取授权码,需要能访问国外网站,并且有atlassian账号 6.将数据库连接 ...

  8. 基于Jmeter的PostgreSQL空间性能测试笔记

    这是很早之前做过的一个测试,最近在整理postgresql测试相关的资料,所以也把它拿出来了与大家分享. 首先解释一下所谓的PostgreSQL空间性能,主要是基于postgis的空间数据导入性能,详 ...

  9. 通过js添加的元素点击事件无法触发

    var blk_have ='<div class="sw-off"></div>'; $('#blk').prepend(blk_have); $(doc ...

  10. 任务调度 -----> quartz 不同时间间隔调度任务

    Quartz Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用.Quartz可以用来创建简单或为运 ...