1、Array构造函数创建数组
var arr1 = new Array(); //创建一个空数组
var arr2 = new Array(20); //创建一个包含20项的数组
var arr3 = new Array('ni', 'min', 'na'); //创建一个包含3个字符串的数组
2、数组字面量创建数组
var arr1 = []; //创建一个空数组
var arr2 = [20]; //创建一个包含1项的数组
var arr3 = ['ni', 'min', 'na'];
3、读取和设置数组的值
var arr8 = ['ni', 'min', 'na'];
arr8[arr8.length] = 'xiaomin'; //在下标为3处(也就是数组尾部)添加新的一项
console.log(arr8.length) // 4 现在arr8数组长度为4
console.log(arr8[arr8.length-1]); // xiaomin 数组最后一项的值
arr8.length = arr8.length-1; //删除数组最后一项
console.log(arr8.length); //3 现在arr8数组长度为3
console.log(arr8[arr8.length-1]) //na 数组当前最后一项的值
4、Array.isArray(对象名) 方法判断对象是否为数组
console.log(Array.isArray(arr8)); //true
var obj = new Object();
console.log(Array.isArray(obj)); //false
var func = new Function();
console.log(Array.isArray(func)); //false
var date = new Date();
console.log(Array.isArray(date)); //false
6、join()方法
var arr9 = [10, 'ni', 'na', 'min', 99, true];
console.log(arr9.join()); //10,ni,na,min,99,true
console.log(arr9.join('-')); //10-ni-na-min-99-true
7、创建一个用字符串abc分隔的拥有4个项成员的数组
function repeatString(str, n){
return new Array(n+1).join(str);
}
console.log(repeatString('abc', 3));
8、push()和pop()
var arr10 = ['ni', 'na', 'min'];
var count = arr10.push(10, 'xia');
console.log(count); //5
console.log(arr10); //(5) ["ni", "na", "min", 10, "xia"]
var val = arr10.pop();
console.log(val); //xia
9、shift()和unshift()
var arr11 = ['ni', 'na', 'min'];
var val = arr11.shift();
console.log(val); //ni
console.log(arr11); //(2) ["na", "min"]
var count = arr11.unshift('nitx');
console.log(count); //3
console.log(arr11); //(3) ["nitx", "na", "min"]
var arr12 = ["a", "b", "c", "d"];
console.log(arr12);
console.log(arr12.sort());
function compare(val1, val2){
if(val1 < val2){
return 1;
}else if(val1 > val2){
return -1;
}else{
return 0;
}
}
var arr13 = [12, 14, 52, 3];
console.log(arr13.sort(compare)); //(4) [52, 14, 12, 3]
var arr14 = [12, 14, 52, 3];
console.log(arr14.reverse()); //(4) [3, 52, 14, 12]
console.log(arr14); //(4) [3, 52, 14, 12] 使用reverse()方法反转原数组后,原数组项改变
var arr15 = [3, 4, 9];
var arr16 = arr15.concat([11, 13],6);
console.log(arr16); //(6) [3, 4, 9, 11, 13, 6] 原数组副本
console.log(arr15); //(3) [3, 4, 9] 原数组
var arr15 = [3, 4, 9];
var arr17 = arr15.concat([11, [12, 17]]);
console.log(arr17); //(5) [3, 4, 9, 11, Array(2)]
console.log(arr17[4]); //(2) [12, 17] 传入二维数组参数的情况,会将二维数组参数中数组项当作一项传入到原数组中
console.log(arr15); //(3) [3, 4, 9] 原数组
var arr18 = [1, 3, 5, 7, 9, 11];
var arrCopy = arr18.slice(1);
var arrCopy2 = arr18.slice(1, 4);
var arrCopy3 = arr18.slice(1, -2);
var arrCopy4 = arr18.slice(-4, -1);
console.log(arrCopy); //(5) [3, 5, 7, 9, 11] 一个参数时,返回从基于0的该参数位置数到原数组末尾项组成的新数组
console.log(arrCopy2); //(3) [3, 5, 7] 两个参数时,返回从基于0的初始下标位置项到结束下标位置项组成的新数组,初始下标<=新数组<结束下标
console.log(arrCopy3); //(3) [3, 5, 7] 参数中有负数时,用基于1的数组项数减去负数所得值作为基于0的参数下标来计算新数组包含项的区间
console.log(arrCopy4); //(3) [5, 7, 9]
console.log(arr18); //(6) [1, 3, 5, 7, 9, 11] 原数组没有发生改变
var arr19 = [1, 3, 5, 7, 9, 11];
console.log(arr19.indexOf(5)); //2 返回数组值5在数组中的位置
console.log(arr19.lastIndexOf(5)); //2
console.log(arr19.indexOf(5, 2)); //2 第二个参数2表示从基于0的数组下标起始位置(2)开始向后索引
console.log(arr19.lastIndexOf(5, 4)); //2 第二个参数4表示从基于0的数组下标起始位置(4)开始向前索引
console.log(arr19.indexOf(5, 3)); //-1 第二个参数3表示从基于0的数组下标起始位置(3)开始向后索引,由于数组项5在数组中的位置是2,所以从第基于0的第3项开始向后索引时没有找到值5,则返回-1
console.log(arr19.indexOf("5")); //-1 由于这两个索引方法在比较第一个参数与数组中的每一个项时,使用的是全等操作符,而"5"与原数组中任一项都不相等,所以找不到该值,返回-1
var arr20 = [1, 3, 5, 7, 9, 11];
//删除
var arrRemoved = arr20.splice(0, 2); //要删除的第一项的位置、要删除的项数
console.log(arr20); //(4) [5, 7, 9, 11]
console.log(arrRemoved); //(2) [1, 3] 返回被删除的项组成的新数组
//插入
var arrRemoved2 = arr20.splice(2, 0, 4, 6); //起始位置、0(要删除的项数)、要插入的项
console.log(arr20); //(6) [5, 7, 4, 6, 9, 11]
console.log(arrRemoved2); //[] 没有删除项时,返回的是空数组
//替换
var arrRemoved3 = arr20.splice(1, 1, 2, 4); //起始位置、要删除的项数、要插入的任意数量的项
console.log(arr20); //(7) [5, 2, 4, 4, 6, 9, 11]
console.log(arrRemoved3); // [7]