Array
是一个用来构造数组的全局对象,它是一个高阶的类似有序列表的对象。
a、讲述基础之前,大家想一下怎么样遍历一个数组,既优雅有快速?
答案是:如果循环终止条件不需要进行比较运算,那么循环的速度还可以更快↓
把数组下标改成向 0 递减,循环终止条件只需要判断 i 是否为 0 就行了。因为循环增量和循环终止条件结合在一起,所以可以写成更简单的 while 循环:
// 最快且优雅的代码
var array = [0,1,2,3,4,5,6,7,8,9];
// while 循环var i = array.length;
while (i--) {
fn( array [ i ] );
}
接下来是Array对象的基础知识汇总:
1、数组表示:
var a = new Array(3);
var a = Array(3);
var a = [1,2,3];
2、以下这种表示在不同浏览器下,数组中元素个数不一:
var a = [,,];
在 IE 中 a数组的长度为3;
在其他浏览器中 a数组的长度为2.
3、数组的 length 属性有个特点:这个属性不是只读的,可以设置此属性,从而从末尾移除或向数组添加元素。
var num =[1,2,3];
alert(num.length); // 3
alert(num[2]) // 3
num.length =2;
alert(num[2]) // undefined
4、检测数组:
① value instanceOf Array 。
var a =[1,2,3,4];
a = > [1,2,3,4];
typeof a = > "object"
a instanceOf Array => true
② Array.isArray(value) => Boolean
5、转换方法:
所有的对象都具有toLocaleString()/toString()/valueOf() 方法。
toString() 方法 作用于数组对象之后,会返回数组中每个元素以字符串形式而成的一个以逗号分隔的字符串
例如:
var colors = ["red", "yellow", "green", "white",];
colors.toString() = "red,yellow,green,white";
6、通过索引访问数组元素:
var first = fruits[0]; // Apple
var last = fruits[fruits.length - 1]; // Banana
7、遍历一个数组:
fruits.forEach(function (item, index, array) {
console.log(item, index);
});
// Apple 0 // Banana 1
精析:
语法:array.forEach(callback[, thisArg])
参数:
callback:在数组每一项上执行的函数,接收三个参数:
currentValue
当前项(指遍历时正在被处理那个数组项)的值。
index
当前项的索引(或下标)。
array
数组本身。
thisArg
可选参数。用来当作callback 函数内this的值的对象。
8、添加元素到数组的末尾:
var newFruit = fruit.push("Orange");
9、删除数组末尾的元素:
var last = fruits.pop();
// remove Orange (from the end)
// ["Apple", "Banana"];
10、删除数组前面的元素:
var first = fruits.shift();
// remove Apple from the front
// ["Banana"];
11、添加到数组的前面:
var newLength = fruits.unshift("Strawberry")
// add to the front
// ["Strawberry", "Banana"];
12、找到某个元素在数组中的索引:
fruits.push("Mango");
// ["Strawberry", "Banana", "Mango"]
var pos = fruits.indexOf("Banana");
// 1
13、通过索引删除某个元素:
var removedItem = fruits.splice(pos, 1);
// this is how to remove an item
// ["Strawberry", "Mango"]
14、复制一个数组:
var shallowCopy = fruits.slice();
// this is how to make a copy
// ["Strawberry", "Mango"]
重点注意:创建的是当前数组的一个副本,通过传参返回新构建的数组!
索引值:index => 从0开始,最后一个为length -1 ;
15、属性:length
16、方法:好多....
至此,数组基础完毕,剩下的就是不断地练习和掌握,毕竟数组的方法很多很多,看好语法API 多多训练,就能驾驭数组。