数组中的方法详解

一.数组的的创建
var a = new Array();等价于a = [];
 
二.实例方法
1.pop(): 去除数组的最后一项,会改变原数组。
var a = [1,2,3,4,5];
console.log(a);//[1,2,3,4,5]
var b = a.pop();
console.log(a);//[1,2,3,4]
console.log(b);//5
2.push():从数组的尾部增加一项,会改变原数组。
var a = [1,2,3,4,5];
console.log(a);//[1,2,3,4,5]
var b = a.push(6);
console.log(a);//[1,2,3,4,5,6]
console.log(b);//6
3.shift(): 从数组的顶部去除一项,会改变原数组
var a = [1,2,3,4,5];
console.log(a);//[1,2,3,4,5]
var b = a.shift();
console.log(a);//[2,3,4,5]
console.log(b);//1
4.unshift():从数组顶部增加一项,会改变原数组
var a = [1,2,3,4,5];
console.log(a);//[1,2,3,4,5]
var b = a.unshift(6);
console.log(a);//[6,1,2,3,4,5]
console.log(b);//6
5.reverse(): 将数组的位置前后调换,会改变原数组
var a = [1,2,3,4,5];
console.log(a);//[1,2,3,4,5]
var b = a.reverse();
console.log(a);//[5, 4, 3, 2, 1]
console.log(b);//[5, 4, 3, 2, 1]
6.sort(): 将数组进行排序,参数为正数为升序,参数为负数为降序,会改变原数组
var a = [1,10,2,3,4,5];
console.log(a);//[1, 10, 2, 3, 4, 5]
var b = a.sort();
console.log(a);//[1, 10, 2, 3, 4, 5]
console.log(b);//[1, 10, 2, 3, 4, 5]

sort会调用每个数组项的toString()转型方法,比较字符串进行排序。

var a = [1,10,2,3,4,5];
console.log(a);//[1, 10, 2, 3, 4, 5]
var b = a.sort(compare);
console.log(a);//[1, 2, 3, 4, 5, 10]
console.log(b);//[1, 2, 3, 4, 5, 10]

function compare(value1, value2) {
	if(value1 > value2) {
		return 1;
	}else if (value1 < value2) {
		return -1;
	}else {
		return 0;
	}
}
7.splice(): 可用于数组的删除、插入、替换,会改变原数组。
参数为俩个时:一项是删除的位置(从0开始),另一项是删除的个数
var a = [1,2,3,4,5];
console.log(a);//[1, 2, 3, 4, 5]
var b = a.splice(1,2);
console.log(a);//[1, 4, 5]
console.log(b);//[2, 3]

参数为三个是:一项为删除的起始位置,一项为删除的个数,一项为添加的项

var a = [1,2,3,4,5];
console.log(a);//[1, 2, 3, 4, 5]
var b = a.splice(1,2,5);
console.log(a);//[1, 5, 4, 5]
console.log(b);//[2, 3]
8.join():将数组转化为字符串,join将数组中的逗号替换成空格,也可以替换成其他的。不改变原数组。 
var a = [1,2,3,4,5];
console.log(a);//[1, 2, 3, 4, 5]
var b = a.join("");
console.log(a);//[1, 2, 3, 4, 5]
console.log(b);//12345
console.log(typeof b);//string
9.concat():  将俩个数组连接,不改变原数组
var a = [1,2,3,4,5];
var b = [6,7,8,9,10];
console.log(a);//[1, 2, 3, 4, 5]
console.log(b);//[6, 7, 8, 9, 10]
var c = a.concat(b);
console.log(a);//[1, 2, 3, 4, 5]
console.log(b);//[6, 7, 8, 9, 10]
console.log(c);//[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
10.slice(): 对数组进行浅复制(该特性使其可以将伪数组转化为数组),不会改变原数组。
var a = [1,2,3,4,5];
console.log(a);//[1, 2, 3, 4, 5]
var b = a.slice(0, 1);
var c = a.slice(1);
var d = a.slice(1, 4);
var e = a.slice(-2);
var f = a.slice(-4, -2);
console.log(a);//[1, 2, 3, 4, 5]
console.log(b);//[1]
console.log(c);//[2, 3, 4, 5]
console.log(d);//[2, 3, 4]
console.log(e);//[4, 5]
console.log(f);//[2, 3]
 
三.位置方法:
1.indexOf():匹配数组,第一个参数为要匹配的数,第二个参数为起始的位置。找不到返回-1。
var numbers = [1,2,3,4,5,4,3,2,1];
console.log(numbers.indexOf(4));//3
console.log(numbers.indexOf(4, 4));//5

2.lastIndexOf(): 从后面往上找,参数同上,起始位置从正向开始数

var numbers = [1,2,3,4,5,4,3,2,1];
console.log(numbers.lastIndexOf(4));//5
console.log(numbers.lastIndexOf(4, 3));//3
console.log(numbers.lastIndexOf(4, 2));//-1

 

四.迭代方法

1.every(): 所有均满足条件则返回true否则返回false。

var numbers = [1,2,3,4,5,4,3,2,1];
var everyResult = numbers.every(function(item, index, array) {
    return (item > 3);
});
console.log(everyResult);//false

2.filter():刷选出数组中满足该条件的的数

var numbers = [1,2,3,4,5,4,3,2,1];
var filterResult = numbers.filter(function(item, index, array) {
    return (item > 3);
});
console.log(filterResult);//[4, 5, 4]

3.forEach():对数组中的每一项执行一些操作,没有返回值。

var numbers = [1,2,3,4,5,4,3,2,1];
numbers.forEach(function(item, index, array) {
    //执行某一些操作
});

4.map(): 对数组中的每一项执行一些操作,返回数组。

var numbers = [1,2,3,4,5,4,3,2,1];
var mapResult = numbers.map(function(item, index, array) {
    return item + 1;
});
console.log(mapResult);//[2, 3, 4, 5, 6, 5, 4, 3, 2]

5.some(): 只要有一项满足条件则返回true否则返回false。

var numbers = [1,2,3,4,5,4,3,2,1];
var someResult = numbers.some(function(item, index, array) {
    return (item > 3);
});
console.log(someResult);//true

 

五.归并方法:

1.reduce():prev: 前一个值; cur: 当前值; index: 项的索引; array: 数组对象 。将数组中的数相加

var values = [1,2,3,4,5];
var sum = values.reduce(function(prev, cur, index, array) {
    return prev + cur;
});//正向
console.log(sum);//15

2.reduceRight():

var values = [1,2,3,4,5];
var sum = values.reduceRight(function(prev, cur, index, array) {
    return prev + cur;
});//反向
console.log(sum);//15

 

六.区分数组与对象。

function isArray(value) {
    return Object.prototype.toString.apply(value) === "[object Array]";//小写的是方法返回的值的格式中默认的,大些的是对象的名字Array
}
var a = {};
var b = [];
console.log(isArray(a));//false
console.log(isArray(b));//true

使用自定义一个isArray函数。

posted @ 2015-06-05 19:15  PLDaily  阅读(414)  评论(0编辑  收藏  举报