数组的长度、数组元素的添加和删除


友情链接:

47道HTTP面试题总结  98道vue面试题总结


一、数组的长度

  1).每个数组都有一个length属性:征对稠密数组,length属性值代表了元素中的个数,其值比数组中的最大索引数大1,当数组是稀疏的时,length的值大于元素的个数。数组长度保证大于它的每个元素的索引值。

      2).数组有两个特殊行为:

       第一个:如果为一个数组元素赋值,它的索引i大于或等于现有的数组的长度时,length的值将设置为i+1。

           第二个:设置length属性为一个小于当前长度的非负整数n时,当前数组中的那些索引值大于或等于n的元素将从中删除。

 var a = [1, 2, 3, 4, 5]; //从5个元素的数组开始
       a.length = 3; //现在a为 [1, 2, 3]
       a.length = 0; //删除所有的元素a为[]
       a.length = 5; //长度为5,但是没有元素,就行new Array(5)

  (注:还可以将数组的length属性值设置为大于当前的长度。实际上不会向数组中添加新的元素,它只是在的尾部创建一个空的区域

  3).在ECMAScript5中,可以使用Object.defineProperty()将数组的属性变成只读的:

 var a = [1, 2, 3];
     Object.defineProperty(a, "length", {writable: false});
     a.length = 0;
     console.log(a);//=> [1, 2, 3]

  (注:类似的,如果让一个数组元素不能配置,就不能删除它。如果不能删除它,length的属性不能设置小于不可配置元素的索引值(见Object.seal()和Object.freeze()方法))。

二、数组元素的添加和删除

  1.添加:

    1).为新索引赋值

    2).使用push()方法在数组的末尾增加一个或多个元素;

    3).使用unshift()方法给首部插入一个元素,并且将其他元素移动到更高的索引处.

1).
    a = []; //开始是一个空数组
    a[0] = "zero"; //想其中添加元素
    a[1] = "one";
    a;//=> ["zero", "one"]
2).
  a = []; //开始是空数组
  a.push("zero");
//在末尾添加一个元素。 a = ["zero"]
  a.push("one","two");//再添加两个元素
  a;//=>["zero", "one", "two"]
  a.unshift("start");
  a;//=> ["start", "zero", "one", "two"];  

  2.删除:

var arr = [0,1,2];
    delete arr[1];
    console.log(arr[1]);  //undefined
    console.log(arr.length);  //3:delete操作并不影响数组的长度

(注:删除数组元素与为其赋值undefined值是类似的(但有一些微妙的区别)。对一个数组元素使用delete不会修改数组的length属性;也不会将元素从高索引处移下来填充已经删除的元素空白。如果从一个数组中删除一个元素,它就变成稀疏数组。

   

原文地址:https://www.cnblogs.com/hanxuming/p/6476450.html