文档章节

JaveScript数组(JS知识点归纳五)

丶不将就
 丶不将就
发布于 2018/12/20 18:15
字数 1475
阅读 1
收藏 0

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熊猫慢递,写了一封给某某人的信,我希望这封信永远不会被寄出,这个人永远不会看到信..安可

本文转载自:https://www.cnblogs.com/AmorR/p/8241175.html

丶不将就
粉丝 1
博文 61
码字总数 0
作品 0
杭州
程序员
私信 提问
JavaScript零基础入门——(八)JavaScript的数组

JavaScript零基础入门——(八)JavaScript的数组 欢迎大家回到我们的JavaScript零基础入门,上一节课我们讲了有关JavaScript正则表达式的相关知识点,便于大家更好的对字符串进行处理。这一...

JandenMa
2018/06/19
0
0
前端开发JavaScript干货知识点汇总

很多初学的朋友经常问我,前端JavaScript都需要学习哪些东西呀?哪些是JavaScript的重点知识啊? 其实做前端开发工程师,所有的知识点都是我们学习必备的东西,只有扎实的技术基础才是高薪的...

WEB开发阿靖
06/26
0
0
关于遍历,看这篇文章就足够了【find()、findIndex()、forEach()、splice()、slice()详解】

在日常写JS逻辑的时候,有小伙伴经常问及我一些遍历相关的逻辑,很多都是很基础性的知识点,只不过需要组合一下就可以实现效果。所以,我觉得还是有必要举几个例子来说明一下这几个js常用的方...

冯冯墨墨
03/31
0
0
三日php之路 -- 第二,三天(php知识要点)

一、基础 (1)数组 // 数组的创建$arr = array("apple", "banana"); $arr = array("f1"=>"apple", "f2"=>"banana"); // 在php5.4之后 可以使用 $arr = [1,2,3]; // 对于数组的遍历$arr_len ......

明天以后
2014/09/29
0
0
javascript学习思维导图

JavaScript 数据类型 JavaScript 变量 Javascript 运算符 JavaScript 流程控制 JavaScript 数组 JavaScript 函数基础 JavaScript 字符串函数 JavaScript 正则表达式 DOM 基本操作 Window 对象...

IT智云编程
2018/09/12
0
0

没有更多内容

加载失败,请刷新页面

加载更多

掌握生成对抗网络(GANs),召唤专属二次元老婆(老公)不是梦

全文共6706字,预计学习时长12分钟或更长 近日,《狮子王》热映,其逼真的外形,几乎可以以假乱真,让观众不禁大呼:awsl,这也太真实了吧! 实体模型、CGI动画、实景拍摄、VR等技术娴熟运用...

读芯术
29分钟前
1
0
C#经典面试题100道

1. .NET和C#有什么区别 答:.NET一般指 .NET FrameWork框架,它是一种平台,一种技术。 C#是一种编程语言,可以基于.NET平台的应用。 2.一列数的规则如下: 1、1、2、3、5、8、13、21、34......

元歌
33分钟前
0
0
重磅!容器集群监控利器 阿里云Prometheus 正式免费公测

Prometheus 作为容器生态下集群监控的首选方案,是一套开源的系统监控报警框架。它启发于 Google 的 borgmon 监控系统,并于 2015 年正式发布。2016 年,Prometheus 正式加入 Cloud Native C...

阿里云云栖社区
34分钟前
1
0
LeetCode 160: 相交链表 Intersection of Two Linked Lists

爱写Bug(ID:iCodeBugs) 编写一个程序,找到两个单链表相交的起始节点。 Write a program to find the node at which the intersection of two singly linked lists begins. 如下面的两个链...

iCodeBugs
36分钟前
2
0
hadoop yarn漏洞 8088端口进入挖矿病毒处理记录

早上发现服务器cpu使用异常 进程如图所示 按照挖矿病毒的套路 肯定是定时任务不停地执行脚本 遂查看定时任务 进入/var/spool/cron 查看定时任务 发现里面有一个root文件 定时任务每分钟执行一...

詹姆斯-高斯林
40分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部