JavaScript权威指南读书笔记——第七章 数组

来源:互联网 发布:linux内核编译详解 编辑:程序博客网 时间:2024/06/05 09:14

创建数组

//  用数组直接量创建数组var arr1 = [1,2,3,4,5];//  创建长度为10的数组var arr2 = new Array(10);//  使用构造函数创建数组,并且初始化var arr3 = new Array(1,2,3,4,5);

数组元素的读和写

使用索引访问数组元素

通过索引访问数组,索引的范围是0-2的32次方-2。

var a = ["hello"];var value = a[0];a[1] = 1;

数组长度

每个数组都有一个length属性。

var arr = [0,1,2,3,4,5,6,7,8,9];varlength = arr.length;             //数组的长度为10

length属性不仅可读还可写,将数组长度重新复制为小于当前length的时候,会将数组内索引大于等于新length值得元素从数组中删除。

arr.length = 5;                     //  [0,1,2,3,4]

数组元素的添加和删除

出了直接使用索引来将数据添加到数组外还可以使用数组的push()方法,push()方法将数据添加到数组末尾。

var arr = [];arr.push("zero");           //  ["zero"]arr.push("one", "two");     //  ["zero","one"."two"]

pop()方法,在将数组末尾的元素从数组移除并返回。

var arr = ["a","b","c"];var value = arr.pop();      //  value为"c",数组内容["a","b"]value = arr.pop();          //  value为"b",数组内容["a"]

数组遍历

普通for循环遍历

var arr = [0,1,2,3,4];for (var i = 0, length = arr.length; i < length; i++){    var value = arr[i];}

for/in循环遍历

var arr = [0,1,2,3,4];for (var index in arr){    var value = arr[i];}

数组方法

join()

将数组中所有元素根据分隔符连接起来,返回字符串形式

var a = [0,1,2];a.join();       //  "0,1,2"a.join(" ");    //  "0 1 2"

reverse()

将数组元素反转

var a = [0,1,2];a.reverse().join(); //  "2,1,0"

sort()

将数组元素排序,默认根据字母顺序表排序

var arr1 = ["hello", "apple", "banana"];arr.sort();                                 //  ["apple","banana","hello"]var arr2 = [111,4,22,12345,222];arr2.sort(function(a,b){    return a - b;});                                         //  [4,22,111,222,12345]

concat()

创建并返回一个新数组,它的元素包括原始数组的元素和concat()的每个参数

var arr = [1,2,3];arr.concat([4,5]);                  //  [1,2,3,4,5]

slice()

将数组返回数组的一个子数组。

var arr = [0,1,2,3,4,5,6,7,8,9];arr.slice(2, 7);                    //  [2,3,4,5,6]arr.slice(3.-1);                    //  [3,4,5,6,7,8]

splice()

该方法是插入数组元素和删除数组元素的通用方法。

var arr = [0,1,2,3,4,5,6,7,8,9];arr.splice(4);                      //  返回[4,5,6,7,8,9],arr的元素[0,1,2,3]arr.splice(1,2);                    //  返回[1,2],arr的元素[0,3]arr.splice(1,1);                    //  返回[3],arr的元素[0]var arr2 = [0,1,2,3,4];arr2.splice(1,2,"a","b");           //  返回[1,2],arr的元素[0,"a","b",3,4]arr2.splice(3,0,"c");               //  返回[],arr的元素[0,"a","b","c",3,4]

push()和pop()

这两个方法开始说过了

unshift()和shift()

unshift()方法可以将元素插入到数组开头返回数组长度,shift()方法将数组元素从开始移返回,并将索引后面数据的索引往前移位。

var arr = [];arr.unshift(1,2);       //  数组元素为[1,2]arr.unshift(3);         //  数组元素为[3,1,2]arr.shift();            //  返回3,数组元素为[1.2]

toString()和toLocaleString()

ECMAScript 5中的数组方法

forEach()

forEach()方法从头到尾遍历数组,为每个元素调用指定的函数。

var arr = [1,2,3,4,5];var sum = 0;//  执行完后sum的结果为15arr.forEach(function(value){    sum += value;});

map()

将调用的数组的每个元素传递给指定的函数,并返回一个数组。

var arr = [1,2,3,4,5];arr.map(function(value){    return value * value;}); arr.join();                     //  "1,4,9,16,25"

filter()

返回的数组是调用数组的子集,只有调用的函数的返回值为true时才存入返回的数组

var arr = [1,2,3,4,5,6,7,8,9,10];//  返回数组中偶数子集arr.filter(funciton(value){    return arr % 2 == 0;});

every()和some()

这两个方法是数组的逻辑判断方法。every()方法,判断方法所有的返回值都为true时返回true。some()方法,判断方法任何一个返回值为true时返回true。

var arr = [0,1,2,3,4,5,6,7,8,9];arr.every(function(value){    return value < 10;});                                 //truearr.every(function(value){        return value % 2 == 0;});                                 //falsearr.some(function(value){    return value > 10;});                                 //falsearr.some(function(value){        return value % 2 == 0;});                                 //true

注:every()方法只要有一个判断方法返回值为false,就会结束遍历返回false。some()方法只要有一个判断方法返回值为true,就会结束遍历返回true

reduce()和reduceRight()

使用指定的函数将数组元素合并。

var arr = [1,2,3,4,5];//  0是初始值,然后 (((((0+1)+2)+3)+4)+5)arr.reduce(function(a,b){    return a + b;},0);var arr2 = [2,3,4];//  pow(2,pow(3,4))arr2.reduceRight(function(a,b){    return Math.pow(a,b);});

indexOf()和lastIndexOf()

搜索数组中具有给定值的元素

var arr = [0,1,2,1,0];arr.indexOf(1);     //  返回值为1,arr[1]是1arr.lastIndexOf(1); //  返回值为3,arr[3]是1arr.indexOf(1,2);   //  返回值为3,arr[3]是1

数组类型

Array.isArray()函数可以用来判断参数是否是数组

Array.isArray([]);      //  trueArray.isArray({});      //  false
原创粉丝点击