数组方法汇总

1,javascript提供的原型方法有:join(),push(),pop(),shift(),unshift(),concat(),slice(),splice(),sort(),reverse()

1)join(separator):将数组以分隔符连接起来,返回连接后的字符串,默认以‘,‘分隔.

var arr = [1,2,3];
arr.join();  //1,2,3
arr.join(‘-‘) //1-2-3

2)push()&pop()

push():接收任意数量参数,并添加至数组末尾,返回数组长度.

pop():移除数组最后一项,并返回移除的项.  

var arr= [1,2,3];
arr.pop() //3(数组最后一项)
arr.push(‘a‘) //4(数组长度)

3)shift()&unshift()

shift():移除数组第一项,并返回移除的项

unshift():将参数添加至数组开头,并返回数组长度

var arr= [1,2,3];
arr.shift(); //1(数组第一项)
arr.unshift(0) //4(数组长度)

4)concat()   将参数添加至原数组中,并返回新构建的数组

[1,2,3].concat(9,11) //[1,2,3,9,11]

5)sort()&reverse()

sort():将数组升序排列

reverse();反转数组项的顺序

[2,1,3].sort() //[1,2,3]

[13,24,51,3].sort() //[13,24,3,51]   排序不对

显然第二种方法有问题,这是因为sort默认会将其转化为字符串做比较,为了解决上述问题,sort()方法还可接收一个比较函数作为参数,比较函数接收两个参数,如果第一个参数位于第二个参数之前返回负数,相等返回0,之后返回正数.

function compare(value1,value2){ //升序排列
     if(value1<value2) return -1;
     else if(value1 > value2) return 1;
     else return 0;
}

[13,24,51,3].sort(compare) //[3,13,24,51]

降序排列

function compare(value1,value2){//降序排列
  if(value1 < value2) return 1;
  else if(value1 > value2) return -1;
  else return 0
}
[13,24,51,3].sort(compare) //[51,24,13,3]

6)slice()&splice()

slice():如果是一个参数,,返回从指定位置开始到结尾的数组,如果是2个参数,返回起始下标到结束下标之间的数组,但不包括结束位置的项

[1,3,5,7,8].slice(1,4) //[3,5,7]

splice():有很多种方法,可以实现删除,插入,替换

删除:指定2个参数,删除的第一项位置以及项数.

插入:指定3个参数,删除的第一项,0(要删除的项数),要插入的项

替换:指定3个参数:删除的第一项,要删除的项数,要插入的项

var arr = [1,3,5,,7,9,11]
arr.splice(0,2) //[5,7,9,11] (删除)
arr.splice(2,0,4,6) ;//[5,7,4,6,9,11] 插入
arr.splice(1,1,2,4) ;//[5,2,4,4,6,9,11]  替换

2,es5新增的方法:indexOf(),lastIndexOf(),forEach(),map(),filter(),every(),some(),reduce(),reduceRight()

1)indexOf()&lastIndexOf()

indexOf():接收2个参数,查找的项和起始位置,从头开始查找

lastIndexof():接收2个参数,查找到项和起始位置,从末尾开始查找

var arr = [1,3,5,7,7,5,3,1];
arr.indexOf(5) //2
arr.lastIndexOf(5) //2
arr.indexOf(‘5‘) //-1类型不一样,因为indexOf采用的严格运算符===判断的

2)forEach() 数组遍历循环,接收一个回调函数,数组每一项运行回调,函数默认3个参数,分别是数组元素,数组下标,以及数组本身

var arr = [1, 2, 3, 4, 5];
arr.forEach(function(x, index, a){
console.log(x + ‘|‘ + index + ‘|‘ + (a === arr));
});
// 输出为:
// 1|0|true
// 2|1|true
// 3|2|true
// 4|3|true
// 5|4|true

3)map(),映射,接收一个函数,对数组的每一项运行该函数.

[1,2,3].map(function(item){return item*item}) //[1,4,9]

4)filter(),接收一个函数,过滤符合条件的数组元素或者对象,并返回满足条件的数组.

//可用于对象的过滤

var data = [{num:1},{num:2},{num:3},{num:4},{num:5}];
var data1 = data.filter(function(item){
 return item.num <= 3;
});
console.log(data1)

//用于数组的过滤

var data = [1,2,3,4,5];
var data1 = data.filter(function(value){
 return value <= 3;
});
console.log(data1)

5)every()&some()

every():判断数组每一项是否符合条件,都符合返回true.

some():判断是否存在满足条件的项,若有返回true.

[1,2,3].every(function(item){return x>2}) //false
[1,2,3].some(function(item){return x>2}) //true

6)reduce()&reduceRight()

reduce():从数组的第一项开始,逐个遍历到最后.

reduceRight():从数组最后一项开始,向前遍历到第一项.

这两个方法都接收两个参数:一个在每一项上调用的函数和(可选的)作为归并基础的初始值。

//appOrderList 为数组对象

var appOrderList=[{goodsOrderID:0},{goodsOrderID:1},{goodsOrderID:2},{goodsOrderID:0},{goodsOrderID:1},{goodsOrderID:2}]
var hash = {};
appOrderList = appOrderList.reduce(function (item, next) { //去重,item为空数组,next当前项
      hash[next.goodsOrderID] ? ‘‘ : hash[next.goodsOrderID] = true  && item.push(next);
       return item;
}, []); //
[{goodsOrderID:0},{goodsOrderID:1},{goodsOrderID:2}]

当然,还可以用forEach实现

var appOrderList=[{goodsOrderID:0},{goodsOrderID:1},{goodsOrderID:2},{goodsOrderID:0},{goodsOrderID:1},{goodsOrderID:2}]
var hash={},item=[];
appOrderList.forEach(function(next){
      hash[next.goodsOrderID] ? ‘‘ : hash[next.goodsOrderID] = true  && item.push(next);
})
item //[{goodsOrderID:0},{goodsOrderID:1},{goodsOrderID:2}]

以上则是javascript提供的全部数组方法.

  

时间: 2024-10-14 03:47:35

数组方法汇总的相关文章

JavaScript Array 数组方法汇总

JavaScript Array 数组方法汇总 1. arr.push() 从后面添加元素,返回值为添加完后的数组的长度 var arr = [1,2,3,4,5] console.log(arr.push(5)) // 6 console.log(arr) // [1,2,3,4,5,5] 2.arr.unshift() 从前面添加元素, var arr = [1,2,3,4,5] console.log(arr.unshift(2)) // 6 console.log(arr) //[2,1

JS数组方法汇总 array数组元素的添加和删除

js数组元素的添加和删除一直比较迷惑,今天终于找到详细说明的资料了,先给个我测试的代码^-^ var arr = new Array(); arr[0] = "aaa"; arr[1] = "bbb"; arr[2] = "ccc"; //alert(arr.length);//3 arr.pop(); //alert(arr.length);//2 //alert(arr[arr.length-1]);//bbb arr.pop(); //al

JS数组方法汇总

shift:删除原数组第一项,并返回删除元素的值:如果数组为空则返回undefined var a = [1,2,3,4,5]; var b = a.shift(); //a:[2,3,4,5]   b:1 unshift:将参数添加到原数组开头,并返回数组的长度 var a = [1,2,3,4,5]; var b = a.unshift(-2,-1); //a:[-2,-1,1,2,3,4,5]   b:7 注:在IE6.0下测试返回值总为undefined,FF2.0下测试返回值为7,所以

JavaScript——数组常用数组方法汇总

//1.方法功能是什么 //2.传递的参数是什么 //3.返回值是什么 //4.原来的数组是否改变/* 第一组:关于数组的增加.删除和修改 1.push 向数组末尾增加新的内容,返回的是添加后新数组的长度,原有的数组改变了 var arr=[10,11,12,13,14,15]; var res=arr.push(16,17); console.log(res); //8 2.unshift 向数组的开头增加新的内容,返回的是添加后新数组的长度,原来的数组也改变 var res=arr.unsh

JS数组方法汇总 array数组元素的添加和删除 - yuzhongwusan - 博客园

body { font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI",Tahoma,Helvetica,Sans-Serif,"Microsoft YaHei", Georgia,Helvetica,Arial,sans-serif,宋体, PMingLiU,serif; font-size: 10.5pt; line-height: 1.5;

JavaScript——数组(三)数组方法汇总

前面两篇大致介绍了一下数组的基本特性,这里说一下数组的常用方法: Array.join() 将数组中所有的元素都转化为字符串并拼接在一起,返回最后生成的字符串. 不改变原数组  可通过指定的分隔符来分隔各个元素,如果不指定分隔符,则默认使用逗号. 1 var arr = [1,2,3];//创建一个包含三个元素的数组 2 arr.join(); //"1,2,3" 3 arr.join(" "); //"1 2 3" 4 arr.join(&qu

PHP二维数组转换成一维数组,一个变量多个二维数组转换成一维数组,PHP二维数组(或任意维数组)转换成一维数组的方法汇总,array_reduce(); array_walk_recursive(); array_map();

方法汇总: 1. array_reduce函数法 //用array_reduce()函数是较为快捷的方法: $result = array_reduce($user, function ($result, $value) { return array_merge($result, array_values($value)); }, array()) 2. array_walk_recursive函数法 //用array_walk_recursive()函数就非常灵活,可以把任意维度的数组转换成一

JavaScript数组方法的兼容性写法 汇总:indexOf()、forEach()、map()、filter()、some()、every()

ECMA Script5中数组方法如indexOf().forEach().map().filter().some()并不支持IE6-8,但是国内依然有一大部分用户使用IE6-8,而以上数组方法又确实非常好用.在过去,我会为了兼容性尽量不用这些方法.但是,总不能为了旧的丢了新的吧?!虽然说jQuery已经集成好了不少语法糖,但jQuery体积太庞大,作为一名志于体面的前端儿得知道原生的兼容性写法要怎么写.于是这几天,我开始在琢磨这些方法的兼容性写法.其实并不难,就是以前不够自信不敢写.写完以后,

getElementByName和getElementByTagName区别和getElement所有方法汇总

工作中很多同学肯定都会遇到这些问题,所以我把它汇总一下,分享给大家. [重点]分析window.document.getElementById("header")语句 1/document整个文档意思,document是主语(限定范围): 2/父级元素例如ul.getElementsByName("x"). 3/Elements一组元素的意思. 4/window.可以省略,因为它是全局环境可以省略不写. ]var x=document.getElementsByNa