数组的常用方法总结

数组方法


1. join (不改变原数组)
  该方法可以将数组里的元素,通过指定的分隔符,以字符串的形式连接起来。
  返回值:返回一个新的字符串

//将数组用 - 符号连接起来
let arr = [1,2,3];
let str = arr.join('-');
console.log(str)//str = 1-2-3;

2. spilt (不改变原数组)
  该方法是用过指定的分隔符,将字符串分割成数组。
  返回值:返回一个新的数组

let str = sd-ys;
let arr = str.split('-');
console.log(arr);// arr=['sd','ys'];

数组的增删操作 (直接改变原数组)



3. push() 
 
该方法可以在数组 尾部,添加一个或者多个元素
  使用:arr.push(值)
  返回值 : 返回的是添加元素后数组的长度

4. unshift()
  
该方法可以在数组 首部,添加一个或者多个元素
  使用:arr.unshift(值)
  返回值 : 返回的是添加元素后数组的长度


5. pop()
  
该方法可以在数组的 最后面,删除一个元素
  使用:arr.pop()
  返回值:返回的是刚才删除的元素

6. shift()
  该方法可以在数组的 最前面,删除一个元素
 使用:  arr.shift()
  返回值: 返回的是刚才删除的元素
 

数组的翻转,去重和排序 (改变原数组)


7. arr.reverse() 翻转数组

8. sort() 排序 

arr.sort(function(a,b){
	return a-b;//从小到大排序
	return b-a;//从大到小排序
})

9.  let newArr =[...new Set(arr)]; 去重
   let newArr = [...new Set(arr.map(v=>JSON.stringify(v)))].map(s=>JSON.parse(s)) 对象去重

   根据数组对象里的id去重
   const map = new Map();
   const newArr = arrObj.filter(v => !map.has(v.id) && map.set(v.id, v)) 


数组的拼接与截取 (不改变原数组)


10. concat()
  
该方法可以把两个数组 拼接 成一个新的数组
  返回值: 返回拼接后的新数组

let arr1 = [1,2,3];
let arr2 = [4,5,6];
let arr = arr1.concat(arr2);//arr = [1,2,3,4,5,6];
arr1.push(arr2);//arr1 = [1,2,3,[4,5,6]];

11. slice()
  该方法可以从数组中 截取 指定的字段,返回出来
  返回值:返回截取出来的字段,放到新的数组中,不改变原数组

方法1:  arr.slice(start,end); 从start下标开始截取,一直到end结束,不包括end

let arr = [0,1,2,3,4,5,6,7];
let newArr = arr.slice(2,5) // 2 <= 范围 < 5
console.log(newArr)  //newArr = [2,3,4]; 

方法2:  arr.slice(start);  从start下标开始截取,一直到最后      (同 substr)

let arr = [0,1,2,3,4,5,6,7];
let newArr = arr.slice(2)//newArr = [2,3,4,5,6,7];

方法3:  arr.slice( ) ;全部截取

let arr = [0,1,2,3,4,5,6,7];
let newArr = arr.slice()//newArr = [0,1,2,3,4,5,6,7];

删除或增加元素(任意在任何位置,直接改变原数组,没有返回值)


12. arr.splice(起始下标,删除数量,...插入元素)
  方法1 (纯删除
):  arr.splice(start,deletedCount)     
  从start下标开始,删除几个

  方法2 (替换):  arr.splice(start,deletedCount,item)
  从start下标开始,删除几个,并在该位置添加item

  方法3 (纯添加):arr.splice(start,0,item)
  从start下标开始,删除0个,并在该位置添加item,start开始全部往后移动  

let arr = [1,2,6,7,8];
arr.splice(2,0,3,4,5);//arr = [1,2,3,4,5,6,7,8];

查找元素在数组中出现的位置 或 是否包含


13. .includes()
  
includes()方法是检验数组中是否包含元素,包含返回true,否返回false

const arr = ["和", "光", "同", "尘"].includes("光")
console.log(arr);//返回true

14. indexOf()

用法:arr.indexOf(元素)
特殊用法:  arr.indexOf (元素,fromIndex),  从fromIndex这个下标开始,元素第一次出现的位置

if (arr.indexOf(元素) === -1){。//说明元素不存在!!
	console.log('元素不存在!)
} else {
	console.log(' 元素存在! ')
}

15. lastIndexOf

  该方法用来查找元素最后一次在数组中出现的位置.   
  使用:arr.lastIndexOf(元素)

遍历数组的方法


1. forEach( )
  
该方法等同于for循环,没有返回值
  功能:用于调用数组的每个元素,并将元素传递给回调函数。

 该方法的第一个参数为回调函数,他有三个参数:
  item: 必须。当前元素的值
  index :可选。当前元素的索引值
  arr :可选。当前元素属于的数组对象
  用法:

let arr = [1,2,3,4,5]
arr.forEach((item, index, arr) => {
  console.log(index+":"+item)
})

2. map()
映射, 不改变原数组,有返回值,会返回新数组,数组中的元素为原始数组元素调用函数处理后的值。 也是三个参数 同forEach
注意: map() 不会对空数组进行检测,它会返回一个新数组,不会改变原始数组。

let arr = [1, 2, 3];
arr.map(item => { return item+1;})// 返回值: [2, 3, 4]

该方法可以进行链式调用:

let arr = [1, 2, 3];
arr.map(item => item+1).map(item => item+1)// 返回值: [3, 4, 5]

3. filter( )
  
有返回值, 过滤出符合条件的元素,满足条件的元素会被返回,不改变原数组

let arr = [1, 3, 5, 2, 4, 6];
let res3 = arr.filter((item, index) =>{
  return item % 2 === 0;
});
console.log(res3);  // 2,4,6

4. some()      (一真则真)
  
有返回值,不改变原数组
  功能:如果有一个元素符合条件 ,返回true

let arr = [1, 2, 3, 4, 5]
arr.some(item => item > 3)

// 结果: true

5. every()    (一假则假)
  
有返回值,不改变原数组
  功能:如果每个元素都符合条件返回true,否则返回false

6. find()
  
有返回值不改变原数组
  功能:返回符合条件的第一个元素

  • 当数组中的元素在测试条件时返回 true 时, find() 返回符合条件的元素,之后的值不会再调用执行函数。
  • 如果没有符合条件的元素返回 undefined

7. findIndex()
  
功能:返回第一个符合条件的元素下标

  • 当数组中的元素在函数条件时返回 true 时, findIndex() 返回符合条件的元素的索引位置,之后的值不会再调用执行函数。
  • 如果没有符合条件的元素返回 -1

8. reduce()
  
加初始值,可改变原数组,有返回值,返回值是数组的和
  功能:按数组下标升序对数组元素求和
  reduce 为数组中的每一个元素依次执行回调函数,不包括数组中被删除或从未被赋值的元素,接 受四个参数:初始值(或者上一次回调函数的返回值),当前元素值,当前索引,调用 reduce 的数组。

注意,该方法如果添加初始值,就会改变原数组,将这个初始值放在数组的最后一位。

var arr = [1, 2, 3, 4]
var sum = arr.reduce((prev, cur, index, arr) => {
    console.log(prev, cur, index);
    return prev + cur;
})   //可以这这里设置初始值   },5)
console.log(arr, sum);  //[1, 2, 3, 4], 10

拓展记录


JSON.parse(JSON.stringify(obj))
str.trim()         去除字符串左右俩边空格
padStart(2,"0")        用于头部补全
str.startWith("hh")        判断是否以什么开头
endWith()        判断是否以什么结尾
Array.isArray(数组对象)        是数组返回true
parseInt(number)        取整数
parseFloat(number)        取代小组数点
toFixed(number)         取小数点后几位数
Math.ceil(Math.random() * 100 + 1)   
 

以上是数组的方法,对象的方法在Object.keys()方法及拓展(es6中对象新增的方法)_object.keys(e).includes('target')_Leslie21.的博客-CSDN博客

暂时这些吧 有遗漏或者技术更新了 再来补充.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值