数组的属性与方法
添加数组元素
var array = ["Cat", "Dog"];
array.push("Fish","Goat");
//此时数组里的元素变成了4个
数组的长度属性
array.length
array[array.length]
添加超过长度属性的值
array[6]="Person";
//此时array变成了["Cat", "Dog", "Fish", "Goat", empty × 4, "Person"]
//其中的empty即孔,undefined
在 JavaScript 中,数组只能使用数字索引。而不能使用命名索引的数组。
假如使用命名索引,js会把数组重定义为标准对象。之后所有的数组方法和属性将产生错误结果。
var person = [];
person["firstName"] = "Bill";
person["lastName"] = "Gates";
person["age"] = 62;
var x = person.length; // person.length 将返回 0
var y = person[0]; // person[0] 将返回 undefined
在 JavaScript 中,数组使用数字索引。
在 JavaScript 中,对象使用命名索引。
数组是特殊类型的对象,具有数字索引。
避免使用new来创建数组对象
var points = new Array(); // 差
var points = []; // 优
typeof array 会返回object
所以判断对象是否是数组:
1.Array.isArray(fruits); // 返回 true
ECMAScript 5标准规定,但老浏览器不支持该协议
2.x.constructor.toString().indexOf("Array") > -1; //自己定义一个function来判断
3.如果对象由给定的构造器创建,则instanceof返回true
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits instanceof Array // 返回 true
数组常用的方法:
JavaScript 方法 toString() 把数组转换为数组值(逗号分隔)的字符串。//Banana,Orange,Apple,Mango
join() 方法也可将所有数组元素结合为一个字符串。//Banana * Orange * Apple * Mango
pop() 方法从数组中删除最后一个元素 //fruits.pop(); 删除掉fruits[fruits.length]
push() 方法(在数组结尾处)向数组添加一个新的元素
shift() 方法会删除首个数组元素,并把所有其他元素“位移”到更低的索引。
unshift() 方法(在开头)向数组添加新元素,并“反向位移”旧元素。//fruits.unshift("Lemon");
覆盖元素,更改元素--直接使用索引(下标),重新给这个位置赋值 //fruits[2]="Pear"
delete fruits[0] //该位置的元素会变为undefined
splice() 方法可用于向数组添加新项
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.splice(2, 1, "Lemon", "Kiwi"); //从下标2开始插入,原先的数组在插入的位置删掉几个原先的元素,剩下的参数都是插入的元素
//Banana,Orange,Lemon,Kiwi,Mango
splice()方法可以在指定位置删除指定个数的元素
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.splice(0, 1); //删除掉了第1个元素
concat() 方法通过合并(连接)现有数组来创建一个新数组:
var myGirls = ["Cecilie", "Lone"];
var myBoys = ["Emil", "Tobias", "Linus"];
var myChildren = myGirls.concat(myBoys); // 连接 myGirls 和 myBoys
//Emma,Isabella,Jacob,Michael,Ethan
还可以连接多个数组:arr1.concat(arr2,arr3);
slice() 方法用数组的某个片段切出新数组。
var citrus = fruits.slice(3); //从参数位置,截取后面的所有元素
var citrus = fruits.slice(1, 3); //取位置1到位置3的元素,第一个元素为原数组1位置的元素,新数组的长度为3-1,原数组不变。
//效果类似subString
JS中所有的对象都有toString()方法,在必要时,js会自动将数组转为toString()
sort() 方法以字母顺序对数组进行排序
reverse() 方法反转数组中的元素
var points = [40, 100, 1, 5, 25, 10];
points.sort(function(a, b){return a - b}); //内部的函数称为比值函数
使用Math
function myArrayMin(arr) {
return Math.min.apply(null, arr);
}
function myArrayMax(arr) {
return Math.max.apply(null, arr);
}
比较属性排序
var cars = [
{type:"Volvo", year:2016},
{type:"Saab", year:2001},
{type:"BMW", year:2010}];
cars.sort(function(a, b){return a.year - b.year});