数组中的一些常用方法总结

青青子衿
青青子衿
青青子衿
109
文章
7
评论
2015年4月16日21:49:17 评论

1. push

作用:向数组的末尾添加一项或多项元素
参数:要添加的项
返回值:新数组的长度
是否改变原数组:改变
var ary = ['a','b','c'];
var res = ary.push('d','e'); 
console.log(ary);  // ["a", "b", "c", "d", "e"]
console.log(res);  // 5

2. pop

作用:删除数组的最后一项
参数:无
返回值:被删除的项
是否改变原数组:改变
var ary = ['1','2','3'];
var res = ary.pop();
console.log(ary);  // ['1','2']
console.log(res);  // 3

3. shift

作用:删除数组的首项
参数:无
返回值:被删除的项
是否改变原数组:改变
var ary = ['a','b','c'];
var res = ary.shift();
console.log(ary);  // ['b','c']
console.log(res);  // a

4. unshift

作用:向数组的开头添加一或多项
参数:要添加的项,多项用','隔开
返回值:新数组的长度
是否改变原数组:改变
var ary = ['a','b','c'];
var res = ary.unshift('d','e');
console.log(ary);  // ["d", "e", "a", "b", "c"]
console.log(res);  // 5

5. splice

作用:增删改
参数:ary.splice(index,howmany,item1,.....,itemX)
返回值:删除的项
是否改变原数组:改变
增加的功能 ary.splice(n,0,x,......,y); 从数组的索引n开始,删除0项,在索引n的前边增加新的项,第三个参数开始都是用来填补删除的项目位置的
var ary = [1,2,3,4,5];
var res = ary.splice(1,0,6,7);
console.log(ary);  // [1, 6, 7, 2, 3, 4, 5]
console.log(res);  // [] 删除0项,返回一个空数组
删除的功能 ary.splice(n,m); 从数组的索引n开始,删除m项
var ary = [1,2,3,4,5];
var res = ary.splice(1,2);
console.log(ary);  // [1,4,5]
console.log(res);  // [2,3]
修改的功能 ary.splice(n,m,x); 从数组的索引n开始,删除m项,把x添加到索引n前边
var ary = [1,2,3,4,5];
var res = ary.splice(1,2,6,7);
console.log(ary);  // [1, 6, 7, 4, 5]
console.log(res);  // [2,3]
//模拟 push(尾部添加)  和push二者返回值不同
ary.splice(ary.length,0,新的项) //因为splice是在索引前添加,所以第一个参数为ary.length
//模拟 pop(尾部删除)
ary.splice(arr.length-1,1);
//模拟 shift(首项删除)
ary.splice(0,1)
//模拟 unshift(首项添加) 和unshilft二者返回值不同
ary.splice(0,0,新的项)
此外
ary.splice(n)  // 表示从索引n开始删除到末尾
ary.splice(0)  // 删除整个数组 有克隆数组的效果,利用返回值

6. slice

作用:截取数组(复制数组)
参数:array.slice(start, end)
返回值:返回一个新数组
是否改变原数组:不改变
var ary = [1,2,3,4,5];
var res = ary.slice(1,3);
var res2 = ary.slice(-3,-1)
console.log(ary);  // [1,2,3,4,5]
console.log(res);  // [2,3]
console.log(res2)  //[3,4] slice支持负参数,从最后一项开始算起,-1为最后一项,-2为倒数第二项

slice(n) //从索引n开始复制到最后一项
slice()、 slice(0)  //复制整个数组

7. join

作用:用指定的分隔符将数组每一项拼接为字符串
参数:指定的分隔符,如果省略该参数,则使用逗号作为分隔符
返回值:拼接好的字符串
是否改变原数组:不改变
var ary = [1,2,3,4,5];
var res = ary.join('-');
console.log(ary);  // [1, 2, 3, 4, 5]
console.log(res);  // 1-2-3-4-5

8. concat

作用:用于连接两个或多个数组
参数:参数可以是具体的值,也可以是数组对象。可以是任意多个
返回值:返回连接后的新数组
是否改变原数组:不改变
var ary = [1,2,3,4,5];
var res = ary.concat(6,7);
var res2 = ary.concat(6,[7,8]);
var res3 = ary.concat(6,[7,[8,9]]);
var res4 = ary.concat();
console.log(ary);  // [1, 2, 3, 4, 5]
console.log(res);  // [1, 2, 3, 4, 5, 6, 7]
console.log(res2);  //[1, 2, 3, 4, 5, 6, 7, 8]
console.log(res3)  // [1, 2, 3, 4, 5, 6, 7, [8,9]]  concat() 如果操作的参数是数组,那么添加的是数组中的元素,而不是数组。 如果是二维(或以上)数组,concat只能'拆开'一层数组
console.log(res4) // [1, 2, 3, 4, 5]  如果concat()没有参数或者参数是空数组也可以达到克隆数组的目的

9. sort

作用:对数组的元素进行排序 
参数:可选(函数) 规定排序规则 默认排序顺序为按字母升序
返回值:排好序的原数组
是否改变原数组:改变
var ary = [1,5,7,9,12,24,56,87,92];
var ary2 = [1,5,7,9,12,24,56,87,92];
var ary3 = [1,5,7,9,12,24,56,87,92];
var res = ary.sort();
var res2 = ary2.sort(function(a,b){
    return a-b;
})
var res3 = ary3.sort(function(a,b){
    return b-a;
})
// sort的参数函数总的形参a,b就是数组排序时候的相邻比较的两项
console.log(res);  // [1, 12, 24, 5, 56, 7, 87, 9, 92]
console.log(res2); // [1, 5, 7, 9, 12, 24, 56, 87, 92]
console.log(res3); // [92, 87, 56, 24, 12, 9, 7, 5, 1]

10. reverse

作用:倒序数组
参数:无
返回值:倒序后的原数组
是否改变原数组:改变
var ary = [1,2,3,4,5];
var res = ary.reverse();
console.log(ary);  // [5, 4, 3, 2, 1]
console.log(res);  // [5, 4, 3, 2, 1]

11. indexOf

作用:查找指定元素的位置
参数:array.indexOf(item,start) item:查找的元素 start:字符串中开始检索的位置
返回值:返回第一次查到的索引,未找到返回-1
是否改变原数组: 不改变
var ary = [1,2,3,4,5]
var res = ary.indexOf(3);
console.log(ary);  // [1,2,3,4,5]
console.log(res);  // 2
var ary = ['a','b','c','d','c'];
var res = ary.indexOf('c',3);
console.log(res) // 4

12. lastIndexOf

作用:查找指定元素最后出现的位置
参数:array.indexOf(item,start) item:查找的元素 start:字符串中开始检索的位置
返回值:返回查到的元素的索引,未找到返回-1
是否改变原数组:不改变
var ary = ['a','b','c','d','c'];
var res = ary.lastIndexOf('c',3);
var res2 = ary.lastIndexOf('c',1);
console.log(res); // 2
console.log(res2); // -1

13. forEach

作用:循环遍历数组每一项
参数:函数 ary.forEach(function(item,index,ary){}) item:每一项 index:索引 ary:当前数组
返回值:无
是否改变原数组: 不改变
var ary = ['a','b','c']
var res = ary.forEach(function(item,index,ary){
    console.log(item,index,ary);
/*  a 0 ["a", "b", "c"]
    b 1 ["a", "b", "c"]
    c 2 ["a", "b", "c"]
*/  
    return item;
})
console.log(res)  // undefined  无返回值

14. map

作用:数组中的元素为原始数组元素调用函数处理后的值
参数:函数 ary.map(function(item,index,ary){}) item:每一项 index:索引 ary:当前数组
返回值:新数组
是否改变原数组:不改变
var ary = ['a','b','c']
var res = ary.map(function(item,index,ary){
    return item+1;
})
console.log(res)  // ["a1", "b1", "c1"]

15. filter

作用:创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。
参数:函数 ary.filter(function(item,index,ary){}) item:每一项 index:索引 ary:当前数组
返回值:新数组
是否改变原数组:不改变
var ary = [1,2,3,4,5,6]
var res = ary.filter(function(item){
    return item<3;
})
console.log(res)  // [1,2]

16. every

作用:检测数组所有元素是否都符合指定条件
参数:函数 ary.every(function(item,index,ary){}) item:每一项 index:索引 ary:当前数组
返回值:布尔值
是否改变原数组: 不改变
var ary = [1,2,3,4,5,6]
var res = ary.every(function(item){
    return item<3;
})
var res2 = ary.every(function(item){
    return item<7;
})
console.log(res)  // false;
console.log(res2)  // true;
1 如果数组中检测到有一个元素不满足,则整个表达式返回 false ,且剩余的元素不会再进行检测。
2 如果所有元素都满足条件,则返回 true。

17. some

作用:检测数组中的元素是否满足指定条件
参数:函数 ary.some(function(item,index,ary){}) item:每一项 index:索引 ary:当前数组
返回值:布尔值
是否改变原数组:不改变
var ary = [1,2,3,4,5,6]
var res = ary.some(function(item){
    return item<3;
})
console.log(res)  // true;
1 如果有一个元素满足条件,则表达式返回 true , 剩余的元素不会再执行检测。
2 如果没有满足条件的元素,则返回 false。

18. reduce

作用:使用指定的函数将数组进行组合,生成单个值。
参数:两个参数,第一个是执行化简操作的函数,第二个参数是上次化简函数的返回值
返回值:计算后的值
是否改变原数组:不改变
var a = [1,2,3,4,5,6];
var sum = a.reduce(function(x,y){return x+y}, 0);     //数组求和
var product = a.reduce(function(x,y){return x*y}, 1); //数组求积
var max = a.reduce(function(x,y){return (x>y)? x:y;}) //求最大值

19. reduceRight

作用:使用指定的函数将数组进行组合,生成单个值。 
注意:它将按照数组索引从高到低(从右到左)处理数组,而不是从低到高。如果你化简操作的优先顺序是从右到左,你可能想使用它。
参数:两个参数,第一个是执行化简操作的函数,第二个参数是上次化简函数的返回值 返回值:计算后的值 
是否改变原数组:不改变
var a = [2,3,4];
//计算2^(3^4).乘方操作的优先顺序是从右到左
var big = a.reduceRight(function(accumulator, value){
  return Math.pow(value, accmualtor);
});
weinxin
我的微信
爱生活、爱学习的小伙伴可以通过扫一扫二维码添加我的个人微信一起交流!
未分类
青青子衿
  • 本文由 发表于 2015年4月16日21:49:17
  • 转载请务必保留本文链接:http://ishangsf.com/archives/194
国内离线安装 Chrome 扩展程序的方法总结

国内离线安装 Chrome 扩展程序的方法总结

前言 Chrome 作为最流行的网页浏览器之一,少不了其丰富强大的扩展们的加成,但国内无法访问 Chrome 扩展应用商店有点不方便。 好在 Chrome 支持离线安装扩展程序,我们只需要下载好离线安...
Verdaccio 搭建内网 npm 服务器

Verdaccio 搭建内网 npm 服务器

工作在一台不能连外网的电脑上,为了能够使用 npm install, 因此使用 verdaccio 搭建内网的npm 服务器 Verdaccio 官网: https://verdaccio.org/d...
gitbook常用的插件

gitbook常用的插件

1. 说明 本文主要讲解gitbook插件的使用。gitbook使用教程请参考我另一篇文章:https://segmentfault.com/a/11... Gitbook默认自带有5个插件: hig...
如何从官网下载 Google Chrome 离线安装包

如何从官网下载 Google Chrome 离线安装包

Google Chrome 已经是许多人的默认浏览器,但由于“你懂的”原因,在线安装基本没有成功过,他自己的自动更新也多数一直在加载中,所以我们会到一些下载站下载安装包,但我的多次经历告诉我,下载回来...
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: