您的位置:首页 > Web前端 > JavaScript

<JavaScript高级程序设计>读书笔记(第5章引用类型之Array类型)

2016-10-21 00:00 453 查看
1.数组长度

//lenth会自动更新
var arr=["black","red","green"];
console.log(arr);//["black", "red", "green"]
arr[99]="white";
console.log(arr);//["black", "red", "green", 99: "white"]
console.log(arr.length);//100

2.判断是否是数组(3种方法)

//typeof一般检测基本数据类型的值,instanceof检测引用类型的值
var arr=["black","red","green"];
console.log(typeof (arr));//object
console.log(arr instanceof Array);//true
//instanceof只适用于单一的全局执行环境

//isArray()不在意数组是在哪个全局执行环境中创建的,但IE9+才支持
var arr=["black","red","green"];
console.log(Array.isArray(arr));//true

//IE9以下
var arr=["black","red","green"];
var isArray=Object.prototype.toString.call(arr);
console.log(isArray);//[object Array]
console.log(isArray == "[object Array]");//true

3.数组转换为字符串(2种方法)

//toString()
var arr=["black","red","green"];
console.log(arr.toString());//black,red,green

//join()
var arr=["black","red","green"];
console.log(arr.join(","));//black,red,green

4.栈方法和队列方法

//栈方法 push()、pop()
var arr=["black","red","green"];
arr.push("yellow");
console.log(arr);   //["black", "red", "green", "yellow"]
var item=arr.pop(); // 删除最后一项
console.log(item);  // 后进先出,yellow
console.log(arr);   //["black", "red", "green"]

//队列 push()、shift() 先进后出
//unshift()、pop()反向模拟队列,数组前端添加(unshift())项、数组末端删除(pop())项。

5.reverse()反转数组

var arr=["black","red","green"];
console.log(arr.reverse());//["green", "red", "black"]

6.sort()方法排序

//sort()方法比较的是字符串
var arr=[1,12,5,20,3];
console.log(arr.sort());//[1, 12, 20, 3, 5]

//sort()正确的调用方式
var arr=[1,12,5,20,3];
function compare(value1,value2){
if(value1>value2)  {
return 1;
}else if(value1<value2)  {
return -1;
}else  {
return 0;
}
}
console.log(arr.sort(compare));//[1, 3, 5, 12, 20]

//更精简版本
var arr=[1,12,5,20,3];
function s(arr){
return arr.sort(function(a, b){
return a - b;
});
}
console.log(s(arr));//[1, 3, 5, 12, 20]

7.concat()方法,连接两个或多个数组

var arr1=[1,2,3,4];
var arr2=["a","b","c"];
arr1=arr1.concat(arr2);
console.log(arr1);//[1, 2, 3, 4, "a", "b", "c"]

8.splice()方法,删、增、替换数组中的项

//splice()删除数组中的某些项
//arr.splice(startLocation,itemNum);
//startLocation:要删除的第一项的位置,itemNum:要删除的项数
var arr=["a","b","c","d","e"];
var deleteData=arr.splice(0,2);//删除了前2个元素
console.log(deleteData);//删除了的元素:["a", "b"]
console.log(arr);//["c", "d", "e"]

//splice()增加数组中的某些项
//arr.splice(insertLocation,deleteIndex,"item","item2","...");
//insertLocation:起始位置,deleteIndex要删除的元素,设为0,item:要插入的元素
var arr=["a","b","c","d","e"];
deleteData=arr.splice(1,0,"f","g");//在arr[1](b)位置开始插入"f","g",不删除任何一个元素
console.log(deleteData);//[]因为未删除任何元素
console.log(arr);//["a", "f", "g", "b", "c", "d", "e"]

//splice()增加数组中的某些项
var arr=["a","b","c","d","e"];
deleteData=arr.splice(1,1,"f");//将b替换为f
console.log(deleteData);//["b"]
console.log(arr);//["a", "f", "c", "d", "e"]

9.迭代方法:every(),filter(),forEach(),map(),some()

//every()
var numbers=[1,2,3,4,5,6,7,8,9,0];
var everyResult=numbers.every(function(item,index,array){
return item > 0;//every(),每一项为true,才返回true
});
console.log(everyResult);//false

//some()
var someResult=numbers.some(function(item,index,array){
return item > 0;//some(),任何一项为true,就返回true
});
console.log(someResult);//true

//filter()
var filterResult=numbers.filter(function(item,index,array){
return item > 0;//filter(),返回为true的数组
});
console.log(filterResult);//[1, 2, 3, 4, 5, 6, 7, 8, 9]

//map()
var mapResult=numbers.map(function(item,index,array){
return item*2;//map(),返回调用结果组成的数组
});
console.log(mapResult);//[2, 4, 6, 8, 10, 12, 14, 16, 18, 0]

//forEach()
numbers.forEach(function(item,index,array){
item=item*2;//forEach(),类似for循环
console.log(item);
});

10.缩小方法,reduce()和reduceRight()

//reduce():迭代数组中的所有项,然后构建一个最终返回的值
//reduceRight():作用同上,但是reduceRight()从数组尾部开始进行
var values=[1,2,3,4,5];
var reduceResult=values.reduce(function(pre,cur,index,array){
return pre+cur;
});
console.log(reduceResult);//15
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息