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

本文详细介绍了JavaScript中数组的创建、读写、长度调整、元素增删等基本操作,并深入探讨了数组遍历的方法及各种数组方法如join(), reverse(), sort(), concat(), slice(), splice(), push(), pop(), unshift(), shift(), toStrin...

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

创建数组

//  用数组直接量创建数组
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的结果为15
arr.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;
});                                 //true
arr.every(function(value){
        return value % 2 == 0;
});                                 //false
arr.some(function(value){
    return value > 10;
});                                 //false
arr.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]是1
arr.lastIndexOf(1); //  返回值为3,arr[3]是1
arr.indexOf(1,2);   //  返回值为3,arr[3]是1

数组类型

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

Array.isArray([]);      //  true
Array.isArray({});      //  false
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值