Array数组类型常用的方法 整理

Array数组类型的方法 整理

1. slice(start,end)数组复制

  • start 参数必须,规定从何处开始选取。如果是负数,那么它规定从数组尾部开始算起的位置
    end 参数不必须,复制的长度
  • 返回值 返回一个新数组,不改变原数组
  • 举例 console.log([1,2,3,4].slice(1)) //返回[2,3,4]

2. push() 对应 pop()

  • 尾部推入/尾部弹出 会改变原数组
    - 返回值 返回把指定的值添加到数组后的新长度 / 返回弹出的元素
  • 举例
console.log([1].push("z")) //2
console.log([1,2,3].pop()) //3

3. unshift() 对应 shift()

  • 头部推入/头部弹出 会改变原数组
  • 返回值 返回把指定的值添加到数组后的新长度 / 返回弹出的元素
  • 举例
console.log([1].unshift("z"))  //2
console.log([1,2,3].shift()) //1

4. concat()
- 连接 连接两个多个数组。
- 返回值 返回一个新的数组 , 不改变原数组

console.log([1].concat([2])) //[1,2]
console.log([1].concat([2],["a","b"])) //[1,2,"a","b"]

5. join()
- 把数组中的所有元素放入一个字符串 不改变原数组
- 返回值 返回一个字符串

console.log(['hello','ergou'].join('?')) //"hello?ergou"

6. sort()
- 对数组的元素进行排序 改变原数组
- 返回值 对数组的引用,数组在原数组上进行排序,不生成副本。

console.log([2,5,2,7,4].sort(
	function(n1,n2){return n1-n2})
) //[2, 2, 4, 5, 7]

7. toString()
- 把数组转换为字符串,并返回结果。 不改变原数组
- 返回值 返回值与没有参数的 join() 方法返回的字符串相同

console.log(['hello',2,'狗'].toString()) //"hello,2,狗"

8. map(function(currentValue,index,arr), thisValue) es5方法
- 参数 function(currentValue,index,arr)参数必须(处理元素的方法)
- 按照原始数组元素顺序依次处理元素。 不改变原数组
- 返回值 返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值

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

//(2)
//在数组 arr 中,查找值与 item 相等的元素出现的所有位置
function findAllOccurrences(arr, item) {
   return arr.map(function(e, index) {
      return e === item ? index : -1;
   }).filter(function(i) {
      return i !== -1;
      /* 过滤掉 i === -1 的情况 */
   })
}
findAllOccurrences([1,2,5,2,6], 2) //[1,3]

9. filter(function(currentValue,index,arr), thisValue) es5方法
- 参数 function(currentValue,index,arr)参数必须(处理元素的方法)
- 按照原始数组元素顺序依次处理元素。 不改变原数组
- 返回值 返回一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素
用法见map()

10. match(regexp)
- 参数 必须
- 返回值 返回一个新的数组,存放匹配结果的数组
- 例:

let str = “data = {‘name’: ‘二狗’}”
let rxg = /{([^}]+)}/i
let arr = str.match(rxg)
console.log(arr)
输出Array(2) [
0:“{‘name’: ‘二狗’}”
1:“‘name’: ‘二狗’”
] 、
match 在非全局匹配时 返回的是一个数组 第一元素是匹配的文本。其他元素是子表达式捕获的文本

let str = "data = {'name': '二狗'}"
let rxg = /\{([^\}]+)\}/ig
let arr = str.match(rxg)
console.log(arr)
输出 Array(1) [
		0:"{'name': '二狗'}"
	]  

11. forEach(function(){item.index})

用法略略略略

另 类数组(例如arguments) 转 数组常用方法

1.定义:

  1. 拥有length属性,其它属性(索引)为非负整数(对象中的索引会被当做字符串来处理,这里你可以当做是个非负整数串来理解)
  2. 不具有数组所具有的方法
  3. (实际上,只要有length属性,且它的属性值为number类型就行了)

12. reduce(callback, [initialValue])
- 参数 callback (执行数组中每个值的函数,包含四个参数)
1、previousValue (上一次调用回调返回的值,或者是提供的初始值(initialValue))
2、currentValue (数组中当前被处理的元素)
3、index (当前元素在数组中的索引)
4、array (调用 reduce 的数组)
-参数 initialValue (作为第一次调用 callback 的第一个参数。)
- 例:

var arr = [1, 2, 3, 4];
var sum = arr.reduce(function(prev, cur, index, arr) {
console.log(prev, cur, index);
return prev + cur;
})
console.log(arr, sum);
打印结果:
1 2 1
3 3 2
6 4 3
[1, 2, 3, 4] 10
注意,没有给定 initialValue ,index是从1开始的,数组长度是4,但reduce函数只循环3次
结论:如果没有提供initialValue,reduce 会从索引1的地方开始执行 callback 方法,跳过第一个索引。如果提供initialValue,从索引0开始。
所以一般来说我们提供初始值通常更安全

常用方法

function a(){
	return Array.prototype.slice.call(arguments) //然后就可以直接使用数组方法啦
}

console.log(a('a',1,2,'b')) //["a", 1, 2, "b"]

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值