数据结构之数组篇

Posted 我在广州写bug

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据结构之数组篇相关的知识,希望对你有一定的参考价值。


我本是在广州体育学院的一名体育生,后来通过一些巧合接触了前端,觉得挺有意思。一行行的代码能编写出一个炫酷的网页以及完成牛逼的用户交互。所以决定跨进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])

}

以上是关于数据结构之数组篇的主要内容,如果未能解决你的问题,请参考以下文章

数据分析之numpy篇

如何系统学习C 语言(中)之 数组篇

JavaScript基础篇分享之三

delphi数组之菜鸟篇

学习大数据:Java基础篇之数组

学习大数据:Java基础篇之数组