javascript中数组的基础----length和元素的求和

一.什么是数组?数组的好处是什么?

1.数组就是由许多名称相同的变量聚集在一起,数组的用法和普通变量是完全一样的,它也可以存入任何数据类型,

唯一的不同点是它在内存中占据的是一块连续的空间,可以依序给它们编号,再依编号来使用它们。数组的好处

在于它可以一次声明和使用多个变量。JAVAScript中使用的时候要用中括号“[]”括起来,不同的变量中间用逗号“,”隔开。

2.数组的存储在堆中的,数组的名字存储在栈中,栈中的引用堆中的,和对象的引用相同。

3.和对象一样,存储在堆中,查找速度快。

二.元素的求和

1.使用遍历的方法求和

 var arr=[1,2,3,4,5,6];
 var s=0;
        for(var prop in arr){
            s=s+arr[prop];  
        }
        console.log(s)        结果:     21    

2.使用递归的方法求和(上篇文章讲过了递归)

        var arr=[1,2,3,4,5,6];
        var sum=function (s,n){
            if(!arr[n]) return s;
            s+=arr[n];            //这里s+=arr[n]; 不能放在上面执行,会造成undefined,进行加法运算,结果会变成NaN.
            return sum(s,n+1);
        }
        
        console.log(sum(0,0))       结果:   21     
这种匿名函数还可以使用自执行函数,函数名字使用arguments.callee() 来代替。

三.length

length是数组的长度,最大下标+1=length。    因此可以使用length进而操作数组的下标,继而实现数组的删除,增加,截取,清空等功能。

1.增加元素

var arr=[1,2,3,4,5,6];
arr[arr.length]=10;
console.log(arr);         //利用length给数组添加元素          结果是:   [1,2,3,4,5,6,10]

2.替换元素

var arr=[1,2,3,4,5,6];
arr[arr.length-2]=10;
console.log(arr);         //利用length给数组添加元素          结果是:   [1,2,3,4,10,6]

从上面两点可以看出数组的length是可以变化的,因此可以利用legnth来给空数组赋值。

       var arr=[];
        for(var i=0;i<10;i++){
            arr[arr.length]=i
        }
        console.log(arr);      结果是:  [0,1,2,3,4,5,6,7,8,9]

3.删除元素

       var arr=[1,2,3,4,5];   //删除最后一个元素
        arr.length--;
        console.log(arr);      结果:[1,2,3,4]

4.清空数组

        var arr=[1,2,3,4,5];
        var len=arr.length;        //数组长度变化时,length不能被用来直接当做判断条件,因为length就是数组长度,同样变化
        for(var i=0;i<len;i++){  
            arr.length--;
        }
        console.log(arr)            结果:[]

第二种方法:
    
 var arr=[1,2,3,4,5];
          for(;--arr.length;){       //这里不能用arr.length--;否则会出现负数
             console.log(arr[arr.length-1])
          }
          console.log(arr)      结果:[]
第三种方法:
     var arr=[1,2,3,4,5];
        arr.length=0;
        console.log(arr);     结果:[]
 
 注:数组被清空了,但是数组本身还在,只是元素没了。
    如果想要删除数组,要设置arr=null;
    如果数组元素是对象,则要先设置对象=null,然后arr=null;因为对象具有引用地址;
   

5.截取数组

        var arr=[1,2,3,4,5];      //从下标0开始到该长度截取下来
        arr.length=4;
        console.log(arr)

四.遍历数组

1)for  遍历

        var arr=[1,2,3,,4,null,5,6];
        arr.a=10;
        for(var i=0;i<arr.length;i++){     
            console.log(i,arr[i])       
        }
    结果:0 1 2 3 4 5 6 7 1,2,3,undefined,4,null,5,6 //没有打印属性 arr.a

2)for  in 遍历

   var arr=[1,2,3,,4,null,5,6];
   arr.a=10;     
   for(var prop in arr){
            console.log(prop,arr[prop])   
        }
结果: 0 1 2 4 5 6 7 a 1 2 3 4 null 5 6 10 //没有打印undefined

两种方法的总结:

for遍历: 按照下标进行遍历,可以遍历出来undefined,结果是数值型

    但是遇见arr.a这种可枚举属性时,就不能遍历

for  in 遍历:  按照属性和属性值进行遍历,所以不能遍历出没有属性值的undefined  ,结果是字符串型

      但是遇见arr.a这种可枚举属性时,可以遍历。

原文地址:https://www.cnblogs.com/94-Lucky/p/13257813.html