JavaScript 数组
- Array
数组是包含子项并由索引迭代子项的一种对象,索引从零开始。
// 使用构造函数创建数组 var foo = new Array; // 使用数组语法创建数组 var bar = []; |
// 数组语法情况下 var foo = [ 100 ]; alert( foo[ 0 ] ); // 100 alert( foo.length ); // 1 // 构造函数情况下 var bar = new Array( 100 ); alert( bar[ 0 ] ); // undefined alert( bar.length ); // 100 |
// 在数组上使用 push(), pop(), unshift() 和 shift() 方法 var foo = []; foo.push( "a" ); foo.push( "b" ); alert( foo[ 0 ] ); // a alert( foo[ 1 ] ); // b alert( foo.length ); // 2 foo.pop(); alert( foo[ 0 ] ); // a alert( foo[ 1 ] ); // undefined alert( foo.length ); // 1 foo.unshift( "z" ); alert( foo[ 0 ] ); // z alert( foo[ 1 ] ); // a alert( foo.length ); // 2 foo.shift(); alert( foo[ 0 ] ); // a alert( foo[ 1 ] ); // undefined alert( foo.length ); // 1 |
- 数组的方法和属性
- .length
.length属性可以确定数组中元素的数量。
var myArray = [ "hello", "world", "!" ]; console.log( myArray.length ); // 3 |
var myArray = [ "hello", "world", "!" ]; for ( var i = 0; i < myArray.length; i = i + 1 ) { console.log( myArray[ i ] ); } |
- .concat()
.concat()方法用于串联两个或更多的数组。
var myArray = [ 2, 3, 4 ]; var myOtherArray = [ 5, 6, 7 ]; var wholeArray = myArray.concat( myOtherArray ); // [ 2, 3, 4, 5, 6, 7 ] |
- .join()
.join()方法用于创建一个由数组内元素组成的字符串,可以指定每个元素之间的分隔符,如果没有指定那么默认为逗号。
// 连接元素 var myArray = [ "hello", "world", "!" ]; // 默认逗号为分隔符 console.log( myArray.join() ); // "hello,world,!" // 也可以指定分隔符 console.log( myArray.join( " " ) ); // "hello world !"; console.log( myArray.join( "!!" ) ); // "hello!!world!!!"; // 指定为无分隔符 console.log( myArray.join( "" ) ); // "helloworld!" |
- .push()
.push()方法将元素添加到数组的末尾并扩展这个数组,你可以使用索引来设置数组元素的值,但是索引有可能是不确定的,那么使用该方法添加元素到数组中是比较安全的做法。
var myArray = []; myArray[ 0 ] = "hello"; myArray[ 1 ] = "world"; myArray[ 3 ] = "!"; console.log( myArray ); // [ "hello", "world", undefined, "!" ];
var foo = []; foo.push( "a" ); foo.push( "b" ); |
- .pop()
.pop()方法用于移除数组中的最后一个元素,与.push()方法的功能相反。
var myArray = []; myArray.push( 0 ); // [ 0 ] myArray.push( 2 ); // [ 0 , 2 ] myArray.push( 7 ); // [ 0 , 2 , 7 ] myArray.pop(); // [ 0 , 2 ] |
- .reverse()
.reverse()方法输出反序的数组序列。
var myArray = [ "world" , "hello" ]; myArray.reverse(); // [ "hello", "world" ] |
- .shift()
// 队列 var myArray = []; myArray.push( 0 ); // [ 0 ] myArray.push( 2 ); // [ 0 , 2 ] myArray.push( 7 ); // [ 0 , 2 , 7 ] myArray.shift(); // [ 2 , 7 ] |
- .slice()
.slice()方法用于提取数组的一部分生成一个新的数组,这个方法需要一个参数,这个参数是数组提取的开始序号。
var myArray = [ 1, 2, 3, 4, 5, 6, 7, 8 ]; var newArray = myArray.slice( 3 ); console.log( myArray ); // [ 1, 2, 3, 4, 5, 6, 7, 8 ] console.log( newArray ); // [ 4, 5, 6, 7, 8 ] |
- .splice()
.splice()方法用于移除一部分元素并新增一部分元素,该方法至少需要3个参数。
myArray.splice( index, length, values, ... );
|
length:被移除元素的数量
values:插入到指定序号位置的值
var myArray = [ 0, 7, 8, 5 ]; myArray.splice( 1, 2, 1, 2, 3, 4 ); console.log( myArray ); // [ 0, 1, 2, 3, 4, 5 ] |
- .sort()
.sort()方法用于数组排序,它需要一个参数,这个参数是一个比较方法,如果没有这样的方法,那么默认按正序排列。
// 默认情况的排序 var myArray = [ 3, 4, 6, 1 ]; myArray.sort(); // 1, 3, 4, 6 // 设置比较方法的排序 function descending( a, b ) { return b - a; } var myArray = [ 3, 4, 6, 1 ]; myArray.sort( descending ); // [ 6, 4, 3, 1 ] |
- .unshift()
.unshift()方法用于在数组的第一个位置插入元素。
var myArray = []; myArray.unshift( 0 ); // [ 0 ] myArray.unshift( 2 ); // [ 2 , 0 ] myArray.unshift( 7 ); // [ 7 , 2 , 0 ] |
- .forEach()
.forEach()方法用于遍历数组。这个方法有三个参数,分别是Element(元素)、Index(元素在数组中的序号)和Array(数组) 。
function printElement( elem ) { console.log( elem ); } function printElementAndIndex( elem, index ) { console.log( "Index " + index + ": " + elem ); } function negateElement( elem, index, array ) { array[ index ] = -elem; } myArray = [ 1, 2, 3, 4, 5 ]; myArray.forEach( printElement ); myArray.forEach( printElementAndIndex ); myArray.forEach( negateElement ); |