JavaScript数组入门

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/WinstonLau/article/details/88598377

创建数组

<script>
	//用数组字面量创建
    var empty = [];  //没有元素的数组
    var primes = [2, 3, 4, 6, 11];  //有5个数值的数组
    var misc = [1.1, true, "a"];  //有3个不同类型的元素的数组
    //下面两种方式最好不要使用,在不同的浏览器版本中结果并不一致
    var count = [1, , 3];  //数组有3个元素,中间的那个元素值为undefined
    var undefs = [,,];  //数组有2个元素,都是undefined
    
    //调用构造函数创建(new可以省略)
    var a = new Array();  //创建一个没有任何元素的空数组
    var a1 = new Array(10);  //创建一个长度为10的空数组
    var a2 = new Array(5, true, "test");  //创建一个包含3个元素的数组
</script>

数组元素的添加和删除

  1. 使用索引添加
<script>
    var empty = [];  //开始是一个空数组
    empty[0] = "zero";  //添加元素
</script>
  1. 使用 unshift() 方法可以接收任意数量的参数,将其插入到数组的首部,并返回修改后数组的长度
<script>
    var colors = new Array();
    colors.unshift("red", "green");
    colors.unshift("blue");
    for (var i = 0; i < colors.length; i++) {
    	//注意输出顺序
        alert(colors[i]); //blue red green
    }
</script>
  1. 使用 push() 方法可以接收任意数量的参数,把它们逐个添加到数组末尾,并返回修改后数组的长度
<script>
    var empty = [];  //开始是一个空数组
    empty.push("zero");  //在末尾添加一个元素
    empty.push("one", "two");  //再添加两个元素
</script>
  1. shift() 方法可以从数组头部删除一个元素,同时将数组长度减 1,但它和 delete 不同的是,shift() 方法将所有元素下移到比当前索引低1的地方

  1. pop()方法从数组末尾移除最后一项,并且使数组长度减少1,同时返回被删除元素的值

  1. 使用 delete 运算符删除数组元素(不会改变数组的 length 属性),也可以简单地设置 length 属性为一个新的值来删除数组尾部的元素

  1. splice() 是一个通用的插入、删除或替换数组元素的方法,它会根据需要修改 length 属性并移动元素到更高或较低的索引处

数组遍历

  1. 使用 for 循环
  2. 使用 for in 循环
  3. 使用 forEach() 循环

操作数组的函数

  1. join() 使用不同的分隔符来构建这个字符串。join()方法只接收一个参数,即用作分隔符的字符串,然后返回包含所有数组项的字符串

    var colors = ["red", "green", "blue"]; 
    alert(colors.join(",")); //red,green,blue 
    alert(colors.join("||")); //red||green||blue
    alert(colors.join("")); //redgreenblue
    
  2. reverse():反转数组项的顺序,该方法会改变原来的数组,而不会创建新的数组

  3. sort():用于对数组的元素进行排序,如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序

    var values = [0, 1, 5, 10, 15]; 
    values.sort(); 
    alert(values); //0,1,10,15,5
    
  • 如果想实现按数值排序,则可以这样做

    function compare(value1, value2) { 
    	if (value1 > value2) { 
    		return 1; 
    	} else if (value1 < value2) { 
    		return -1; 
    	} else { 
    		return 0; 
    	}
    }
    var values = [0, 1, 5, 10, 15]; 
    values.sort(compare); 
    alert(values); //0,1,5,10,15
    
  1. concat() 方法会先创建当前数组一个副本,然后将接收到的参数添加到这个副本的末尾,最后返回新构建的数组。在没有给 concat() 方法传递参数的情况下,它只是复制当前数组并返回副本。如果传递给 concat() 方法的是一或多个数组,则该方法会将这些数组中的每一项都添加到结果数组中。如果传递的值不是数组,这些值就会被简单地添加到结果数组的末尾

    var colors = ["red", "green", "blue"]; 
    var colors2 = colors.concat("yellow", ["black", "brown"]);
    
    alert(colors); //red,green,blue
    alert(colors2); //red,green,blue,yellow,black,brown
    
  2. slice()。slice()方法可以接受一或两个参数,即要返回项的起始和结束位置。在只有一个参数的情况下,slice()方法返回从该参数指定位置开始到当前数组末尾的所有项。如果有两个参数,该方法返回起始和结束位置之间的项—但不包括结束位置的项。注意,slice()方法不会影响原始数组

    var colors = ["red", "green", "blue", "yellow", "purple"]; 
    var colors2 = colors.slice(1); 
    var colors3 = colors.slice(1,4);
    
    alert(colors2); //green,blue,yellow,purple
    alert(colors3); //green,blue,yellow
    
  3. splice()

  • 作用1 —— 删除:可以删除任意数量的项,只需指定 2 个参数:要删除的第一项的位置和要删除的项数。 例如,splice(0,2)会删除数组中的前两项,第二个参数为0则表示不删除

  • 作用2 —— 插入:可以向指定位置插入任意数量的项,只需提供 3 个参数:起始位置、0、要插入的项。 如果要插入多个项, 可以再传入第四、第五, 以至任意多个项。 例如, splice(2,0,“red”,“green”)会从当前数组的位置 2 开始插入字符串"red"和"green"

  • 作用3 —— 替换:可以向指定位置插入任意数量的项,且同时删除任意数量的项,只需指定 3 个参数:起始位置、要删除的项数、要插入的任意数量的项。插入的项数不必与删除的项数相等。例如, splice (2,1,“red”,“green”)会删除当前数组位置 2 的项,然后再从位置 2 开始插入字符串 “red"和"green”。

  • splice()方法始终都会返回一个数组,该数组中包含从原始数组中删除的项(如果没有删除任何项,则返回一个空数组)

    var colors = ["red", "green", "blue"]; 
    var removed = colors.splice(0,1); // 删除第一项
    alert(colors); // green,blue 
    alert(removed); // red,返回的数组中只包含一项
    
    removed = colors.splice(1, 0, "yellow", "orange"); // 从位置 1 开始插入两项
    alert(colors); // green,yellow,orange,blue 
    alert(removed); // 返回的是一个空数组
    
    removed = colors.splice(1, 1, "red", "purple"); // 插入两项,删除一项
    alert(colors); // green,red,purple,orange,blue 
    alert(removed); // yellow,返回的数组中只包含一项
    

判断一个对象是否是数组

  • 最好使用 isArray() 方法,而不要使用 instanceof,因为它假定只有一个全局执行环境

  • instanceof 的用法,if 语句返回 true 或 false,arrName 表示数组的名称

if (arrName instanceof Array) { 
	//对数组执行某些操作 
}
  • isArray() 的用法,if 语句返回 true 或 false
if (Array.isArray(arrName)) {
 	//对数组执行某些操作 
 }

猜你喜欢

转载自blog.csdn.net/WinstonLau/article/details/88598377