在ECMAScript中数组是非常常用的引用类型了。
//定义方式
var arr = new Array();
var arr = [1, 2, 3, 4, true, "abc", new Date()];
console.info(arr.length);
arr.length = 5;
console.info(arr);
console.info(arr.toString());
ECMAScript所定义的数组和其他语言中的数组有着很大的区别。那么首先要说的就是数组也是一种对象。
特点:
"数组"即一组数据的集合。
js数组更加类似java的容器。长度可变,元素类型也可以不同!
数组长度随时可变!随时可以修改!(length属性)
常用方法:
push、pop
/**
* push 和 pop方法
* 修改数组自身
*/
var arr = [new Date(), false];
var result = arr.push(1, 2, true); //push方法向数组尾部追加元素,返回追加元素后的数组长度
console.info(result);
console.info(arr);
console.info(arr.length);
var obj = arr.pop(); //pop方法从数组尾部移除一个元素,返回当前移除的元素,数组长度-1
console.info(obj);
console.info(arr);
console.info(arr.length);
shift、unshift
/**
* shift 和 unshift方法
* 修改数组自身
*/
var arr = [1, 2, 3, true, new Date()];
var r1 = arr.shift(); //shift方法从数组头部移除一个元素,返回当前移除的元素,数组长度-1
console.info(r1);
console.info(arr);
console.info(arr.length);
var r2 = arr.unshift(10, false); //unshift方法从数组头部追加元素,返回追加元素后的数组长度
console.info(r2);
console.info(arr);
console.info(arr.length);
splice、slice
/**
* splice、slice方法
* splice方法操作数组本身,可在指定位置完成添加、修改、删除等操作
* slice方法不操作数组本身,返回新的数组
*/
//splice()参数
// 第一个参数:起始位置
// 第二个参数:截取长度
// 第三个参数以后:表示追加的新元素
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/splice
var arr = [1, 2, 3, 4, 5];
arr.splice(1, 2, 3, 4, 5);
console.info(arr); //1, 3, 4, 5, 4, 5
//slice() //返回截取的内容 截取的范围左闭右开
// 第一个参数:起始位置,包含
// 第二个参数:结束位置,不包含
var arr = [1, 2, 3, 4, 5];
var result = arr.slice(2, 4);
console.info(result);
console.info(arr);
concat、join
//操作数组的方法: concat join
//concat 把两个数组合并为一个新数组,方法不操作数组本身,返回一个新的数组
var arr1 = [1, 2, 3];
var arr2 = [true, 4, 5];
var result = arr1.concat(arr2);
console.info(result);
console.info(arr1);
console.info(arr2);
//join 把数组元素按指定分割符连接成一个字符串,方法不操作数组本身
var result = arr1.join("-");
console.info(arr1);
console.info(result);
sort、reverse等
/**
* sort排序
* reverse倒序
*/
var arr1 = [5, 2, 1, 4, 3];
var arr2 = [10, 2, 4, 1, 7];
arr1.sort(); //sort()方法默认按照字符串方式比较
console.info(arr1); // [1, 2, 3, 4, 5]
arr1.reverse();
console.info(arr1); //[5, 4, 3, 2, 1]
arr2.sort();
console.info(arr2); //[1, 10, 2, 4, 7]
function compare(value1, value2){
if(value1 < value2){
return -1;
} else if(value1 > value2){
return 1;
} else {
return 0;
}
}
arr2.sort(compare); //指定排序function
console.info(arr2); //[1, 2, 4, 7, 10]