js数组的常用方法

来源:互联网 发布:兰芝淘宝旗舰店 编辑:程序博客网 时间:2024/04/27 09:25

定义

数组可以用new的方式也可以用字面量来定义。

var arr1 = new Array();

var arr2 = [1, 2, 'aa', new Date(), true];

//alert(arr1.length);

//alert(arr2); //会自动转换成string,效果等同于 arr2.toString()

添加和移除元素

从尾部

//push和pop

var arr3 = [new Date(), false];

var res = arr3.push(1, 2, true); //push方法像数组中追加元素(返回值为新数组长度)

alert(arr3); //arr3中追加了1, 2, true三个元素

alert(res); //返回的是新数组的长度 5

var res2 = arr3.pop(); //从数据尾部移除一个元素,返回值为移除的元素

alert(arr3);

alert(res2); //返回值为移除的元素

 

从头部

//shift和unshift

var arr4 = [1, 2, true, new Date()];

var res4 = arr4.shift(); //从头部移除一个元素(返回移除的元素)

 

var res5 = arr4.unshift(10, false); //从头部插入多个元素,返回新数组元素个数

alert(res5);

 

截取

/*

splice和slice(截取相关),返回删除的元素

splice方法操作数组本身

slice不操作数组本身

*/

var arr5 = [1, 2, 3, 4, 5];

//splice(起始位置,截取的个数,第三个参数及以后表示:插入到截取位置的新元素)

var res6 = arr5.splice(1, 2, 3, 4, 5);

//alert(arr5); //1,3,4,5,4,5

//alert(res6); //返回删除的元素 2,3

 

var arr6 = [1, 2, 3, 4, 5];

var res7 = arr6.slice(2, 4); //左闭右开,语法arrayObject.slice(start,end)

//alert(arr6); //和原来一样不变

//alert(res7); //返回删除的元素 3,4

 

拼接

concat() 方法用于连接两个或多个数组。

该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本。

语法:arrayObject.concat(arrayX,arrayX,......,arrayX)

 

//concat 和 join 都不更改原数组

var arr7 = [1, 2, 3];

var arr8 = [true, 4, 5];

 

var res8 = arr7.concat(arr8); //合并操作,不操作原数组本身

//alert(res8); //返回合并后的数组

 

var res9 = arr7.join("-"); //join() 方法用于把数组中的所有元素放入一个字符串。不传参数使用逗号分隔

//alert(res9); //1-2-3

 

排序

语法:arrayObject.sort(sortby)sortby可选,规定排序顺序,必须是函数。

 

/*

sort正序排序

reverse 倒序排序(按照原来的顺序反转)

*/

var arr9 = [1, 2, 4, 3, 5];

var arr10 = [1, 10, 2, 5, 3];

arr10.sort(); // 是按照字母来排序的 1,10,2,3,5

arr9.reverse(); //按照原来的顺序反转

document.write(arr10 + "<br />");

默认的sort是按照字母排序的,这样 10就会排在2的前面。

我们需要自定义个比较函数作为参数,实现按数字大小排序。

如下:

function sortNumber(a, b) {

return a - b

}

 

var arr = new Array(6)

arr[0] = "10"

arr[1] = "5"

arr[2] = "40"

arr[3] = "25"

arr[4] = "1000"

arr[5] = "1"

 

//document.write(arr + "<br />") // 10,5,40,25,1000,1

//document.write(arr.sort(sortNumber)) // 1,5,10,25,40,1000

说明:

比较函数sortNumber(a, b) 具有两个参数 a 和 b,返回一个用于说明这两个值的相对顺序的数字。其返回值如下:

若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。

若 a 等于 b,则返回 0。

若 a 大于 b,则返回一个大于 0 的值。

 

ECMAScript5 新特性

/* ECMAScript5 数组新特性补充

位置方法:indexOf lastIndexOf

迭代方法:every filter forEach some map

缩小方法:reduce reduceRight

*/

var arr = [1, 2, 3, 4, 2, 1];

//位置方法:indexOf lastIndexOf 一个参数,表示要搜寻的元素

var index=arr.indexOf(2);

//document.write(index);

 

//两个参数(要搜寻的元素,起始位置)

var index = arr.indexOf(2, 2);

document.write(index);

//lastIndexOf,用法完全一样,只不过从尾部向前搜

var index = arr.lastIndexOf(2, 4);

document.write(index);

 

//迭代方法:every filter forEach some map

//every, 与运算,全是true为true

var res = arr.every(function(item, index, array) {

return item > 0;

})

//some,或运算,有一个true返回true

var res = arr.some(function (item, index, array) {

return item > 3;

})

//document.write(res);

//filter把过滤后的结果返回

var res = arr.filter(function (item, index, array) {

return item > 2;

})

//forEach,遍历每一项执行方法

arr.forEach(function (item, index, array) {

//document.write(item+"<br/>");

})

//map, 对元素每一项执行方法,把新的结果返回

var res= arr.map(function (item, index, array) {

return item * 2;

})

 

//左结合和右结合方法:reduce reduceRight

var res = arr.reduce(function (prev,cur,index,array) {

return prev + cur;

})

//document.write(res);

0 0