zoukankan      html  css  js  c++  java
  • 数据结构——数组


    我本是在广州体育学院的一名体育生,后来通过一些巧合接触了前端,觉得挺有意思。一行行的代码能编写出一个炫酷的网页以及完成牛逼的用户交互。所以决定跨进it的领域,进行残忍的掉发修行。兜兜转转已经学习了有半年时间了。今天这是我写的第一篇博客,打算在此记录我在掉发之旅中的一些心得,同时也给自己做个总结,好了废话不多说,开始着手写吧。

    数组是在JS里经常遇到的数据类型。数组可存储同一系列的数据,也可在数组里存储不同数据类型的值。

    首先总结一下数组一些核心方法:{

                1、concat          拼接两个或多个数组,并返回结果              

                2、join               将数组所有元素拼接成字符串

                3、indexOf        返回第一个与给定参数的索引,没有则返回-1

                4、lastIndexOf  返回最后一个与给定参数的索引,没有则返回-1

                5、sort      给数组元素进行排序 

                6、toString     将数组作为字符串返回

                7、valueOf     将数组作为字符串返回

                等等

                    }


    创建一个数组 var arr=[ ];
    var arr1=new Array( );
    var arr2=new Array(5);//创建指定长度的数组

    也可以使用元素初始化数组:  var arr3=[1,2,3,4,5,6,7];//下文使用本数组做例子

    如果想知道一个数组里有几个元素即可使用 数组的length属性。譬如上面的arr3.length // 7

    如果想访问数组中特定位置的元素可使用数组括号加上元素的下标,比如arr3[0]//结果是1。数组下标是从0开始计算

    若想输出数组的全部元素,我们可以遍历数组

                        var num=' '//声明一个空变量   

                        for(var i=0;i<arr3.length;i++){

                          num+=arr3[i]

                         }

                        console.log(num)//输出数组的全部元素

    数组的添加、删除元素:

    1、添加元素:尾部添加元素push()、头部添加unshift()、还有一种指定位置添加splice(index,removelength,item1......,itemN),

    添加元素也可以直接赋值给数组,比如arr3[8]=2,这样等于在数组尾部添加了数字2

    2、删除元素:尾部删除并返回该元素pop()、头部删除元素shift()、指定位置删除splice(index,removelength)

    splice()方法里面参数index、removeindex是必需的。index是指定元素位置,removelength则是删除元素的个数(如果填写0则不删除),item1--itemN则是添加的元素,可以有N个值。

    3、数组合并:concat( )方法:arr3=[1,2,3,4,5,6,7];

                 newarr=[8,9];

                 arr3.concat(newarr)//合并两个数组,输出arr3=[1,2,3,4,5,6,7,8,9]

    4、join方法:将数组拼接成字符串形式返回。arr3.join(‘—’)//会返回"1-2-3-4-5-6-7"

    5、数组的排序:给定一个无序的数组narr=[1,3,5,7,3,2,6,2];我们可以直接用narr.sort()来排序没有问题。结果输出是//[1, 2, 2, 3, 3, 5, 6, 7]

    但是如果是narr1=[1,3,21,33,52,6]使用narr1.sort()进行排序输出结果是//[1, 21, 3, 33, 52, 6]

    为什么会这样,因为sort方法在比较时把元素默认成字符串进行比较

    那么既然传入的都是数字,我们可以给他一个方法,这样写narr1.sort(function(a,b){

                                return a-b 

                              })//这样在排序时传入的a,b就会进行比较,如果a>b那么就会返回正数,反之返回负数,相等返回0。sort方法会根据返回的值进行排序。

    如果还不明白那么我们可以写成function arrSort(a,b){

                    if(a>b){

                      return 1}else if(a<b){

                           return -1}else{

                               return 0}

                  }

                  narr1.sort(arrSort)//sort方法调用前面定义的arrSort()函数,然后用它进行排序数组。

    6、搜索:有两个方法,分别是indexOf以及lastIndexOf。在这里我们重新定义数组 var arr=[1,2,3,4,5,7,1];然后我们使用两种方法搜索数组里面的数字1,看下输出结果

    arr.indexOf(1)//返回索引是0,该方法返回第一个与给定元素匹配的索引

    arr.lastIndexOf(1)返回索引是6,该方法返回最后一个与给定元素匹配的索引

    7、还有forEach、slice、every等一些方法没有介绍,后面会陆续写完

    最后写一个小例子:已知斐波那契数列的第一个数字是1,第二个数字是2,从第三项开始,每一项等于前两项的和,求数列的前20个数字。

    var num=[];

    num[1]=1;

    num[2]=2;

    for(var i=3;i<20;i++){

    num[i]=num[i-2]+num[i-1]

    }

    for(var i=0;i<num.length;i++){

    console.log(num[i])

    }

  • 相关阅读:
    Codeforces Round #592 (Div. 2)C. The Football Season(暴力,循环节)
    Educational Codeforces Round 72 (Rated for Div. 2)D. Coloring Edges(想法)
    扩展KMP
    poj 1699 Best Sequence(dfs)
    KMP(思路分析)
    poj 1950 Dessert(dfs)
    poj 3278 Catch That Cow(BFS)
    素数环(回溯)
    sort与qsort
    poj 1952 buy low buy lower(DP)
  • 原文地址:https://www.cnblogs.com/xzhan/p/8989352.html
Copyright © 2011-2022 走看看