数组方法总结
上周没事的时候把自己对数组方面的理解做了一下总结,知识点不深,方便以后的查阅。
1.对象继承方法
// 对象继承方法toString() toLocalString() valueOf()
//toString()返回的结果是去掉数组两边的"[" "]",toLocalString()和前者相同,而valueOf()返回的则是数组本身
var arr = [1,2,3]; console.log(arr.toString()) //1,2,3 console.log(arr.toLocaleString()) //1,2,3 console.log(arr.valueOf()) //[1,2,3]
2.数组转换方法
//数组转换方法 var arr = [1,2,3]; console.log(arr.join());//1,2,3 console.log(arr.join(""));//123 console.log(arr.join("-"));//1-2-3 console.log(arr.join(undefined));//1,2,3(如果参数是undefined,标准浏览器返回逗号隔开的内容,ie7返回的是undefined的内容)
3.栈和队列方法
// 栈和队列方法 pop() push() shift() unshift() // 栈是一种LIFO last-in-first-out 后进先出的数据结构。也就是说最新添加的项最早被移除。 // 队列是一种FIFO first-in-first-out 先进先出。队列在列表的末端添加项,在列表的前端删除项。 // pop() push() shift() unshift() 都会改变数组的长度,因此会改变原始数组。 var a = []; console.log(a,a.push(1));//[1],1 console.log(a,a.push('wbin'));//[1,'wbin'],2 var d = []; console.log(d.shift()) //undefined
4.数组排序方法
// 数组排序方法 sort(),reverse()两个方法都会改变原始数组 var arr = [1,2,3,4,5]; console.log(arr.reverse())//数组反转 console.log(arr);//改变了原始数组 // sort() 如果包含undefined,则会把undefined放在最后面 var arr1 = [1,undefined,2,undefined,3]; arr1.sort() console.log(arr1)//[1,2,3undefined,undefined];
// 数组里面有字符串和数字比较的时候,返回NaN,也就是false.所以会出现在数字前面 var arr2 = ['wbin',3,50,3]; arr2.sort(function(x,y){ if(x<y){ return -1 }else if(x>y){ return 1 }else{ return 0 } }) console.log(arr2)
可以利用sort()来随机排序一个数组
function compare(){ return Math.random() - 0.5; } var h = [1,2,3,4,5]; console.log(h.sort(compare));
5.concat()
// concat()方法基于当前数组中的所有项创建一个新数组,先创建当前数组一个副本,然后将接收到的参数添加到这个副本的末尾,最后返回新构建的数组。所以,不影响原数组 // 如果不提供参数,concat()方法返回当前数组的一个浅拷贝。也就是说如果数组成员包括复合类型(比如对象),则新数组拷贝的是该值得引用。 var i = [1,2]; var ii = i.concat(); console.log(i,ii); i[0] = 0; console.log(i,ii) var j = [[1,2]]; var jj = j.concat(); console.log(j,jj); j[0][0] = "wbin"; console.log(j,jj) var aa = { a:11 } var bb = { b:22 } var r = Array.prototype.concat.call(aa,bb) console.log(r)
6.reduce()
var arr1 = [1,32,3,4,5]; // 求和 var sum = arr1.reduce(function(x,y){ return x+y }) console.log(sum)//45 // 带有原始数据的求和 var sum1 = arr1.reduce(function(x,y){ return x+y },-5) console.log(sum1)//40 // 找出长度最长的数组元素 var arr2 = ['aaa',1,222,3,'wbin']; var findLongest = arr2.reduce(function(pre,cur){ return pre.length > cur.length ? pre :cur }) console.log(findLongest)//wbin // 实现二维数组扁平化 var matrix = [ [1,2], [3,4], [5,6] ] var flatten = matrix.reduce(function(pre,cur){ return pre.concat(cur) }) console.log(flatten)//[1,2,3,4,5,6]
7. 数组迭代方法,两个参数,一个是要在每一项上运行的函数和运行该函数的作用域对象
var arr2 = [1,2,3]; var r2 = arr2.map(function(item,index,arr){ return item*item }) console.log(r2)//[1,4,9] var arr3 = ['a','b','c']; var r3 = [1,2].map(function(item,index,arr){ return this[item]//只能写成这样的格式 },arr3) console.log(r3)//['b','b'] // 利用map方法获得对象数组中的特性属性值 let arr4 = [ { name:'qi_tian_da_sheng', email:'666@qq.com' }, { name:'tian_peng_yuan_shuai', email:'888@qq.com' }, { name:'wbin', email:'8888888@qq.com' } ] var r4 = arr4.map(function(item,index){ return item.email }) console.log(r4)//['666@qq.com','888@qq.com','8888888@qq.com'] // 对字符串使用该方法,返回的是一个分开的数组 var str = "abc"; var r5 = Array.prototype.map.call(str,function(item,index){ return item//这里可以写一些方法 })
8.filter()
1 // filter()会跳过稀疏数组中缺少的元素,它的返回值总是稠密的 2 var arr6 = [1,,2,,,3,,,,,,4]; 3 var r6 = arr6.filter(function(){ 4 return true 5 }) 6 console.log(r6)//[1,2,3,4]
9.some() 和 every()
// some() 方法对数组中的每一项运行给定函数,如果该函数对任一项返回true,则返回true var arr7 = [1,2,3]; var r7 = arr7.some(function(ele){ return ele%2 ===0 }) console.log(r7)//true // 空数组上调用some返回的是false console.log([].some(function(){}))//false // every()和some相反
改变原数组的方法有七种
四种栈和队列方法 unshift() shift() pop() push()
两个排序方法 reverse() sort()
一个删除方法 splice()
还遗漏一些其他的方法,以后补充。
如果你的才华还实现不了你的野心,那就静下心来,埋头苦干。有志者事竟成破釜成舟百二秦关终属楚,苦心人天不负卧薪尝胆三千越甲可吞吴!
分类:
JavaScript
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个我遇到过的“量子力学”级别的BUG。
· Linux系列:如何调试 malloc 的底层源码
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· Apifox不支持离线,Apipost可以!
· 历时 8 年,我冲上开源榜前 8 了!
· 零经验选手,Compose 一天开发一款小游戏!
· Trae 开发工具与使用技巧
· 通过 API 将Deepseek响应流式内容输出到前端