js 数组方法的理解
来源:互联网 发布:java微信上传图片接口 编辑:程序博客网 时间:2024/06/07 07:34
转换方法(toString valueOf)
什么时候会使用?
- 对象转换为基本类型
- 基本类型之间的互相转换(string,number)
- 两者转换的区别
- 数组转换为字符串—–join(),toString()
栈、队列方法(push pop shift unshift)
- 添加,删除数组项
- 数组项的添加是给数组某一项赋值,数组length自动改变;数组项的删除必须是从数组的最后一项开始删除,即最后一项赋值undefined,并且手动把数组的length值减1
- 删除是只能删掉一项,添加可以添加多项
shift unshift的实现原理是什么?是通过先把数组的项反转过来,然后再用push pop修改,最后再把数组反转过来吗?
操作方法 (concat slice splice)
- 栈、队列方法是在数组的首位项进行添加,删除;操作方法可以再任意位置对数组进行修改。
排序方法(reverse sort)
sort方法重写:
var arr = [10,2,5,3];function mySort(compare){ for(var i = 0; i < arr.length; i++){ for(var j = 0; j < arr.length; j++){ var v1 = arr[i]; var v2 = arr[j]; if(compare(v1,v2)>0){ var temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } } } return arr;}mySort(function(v1,v2){ return v1-v2;})
这里的双重for循环排序是效率比较低的一种方式,还可以用其他什么方式提高效率!!!
回调函数的使用
- 匿名函数作为回调函数,匿名函数的参数由外部函数提供,匿名函数的返回值由外部函数获取并使用。
位置方法(indexof lastIndexOf)
迭代方法(each some filter map forEach)
map方法重写
var arr = [1,2,3];function myMap(callback){ var newArr = []; for(var i = 0; i<arr.length; i++){ var item = arr[i]; newArr[i] = callback(item); } return newArr;}myMap(function(item){ return item * 2;})
forEach方法使用
var arr = [1,2,3];arr.forEach(function(item,index,array){ array[index]++;})arr[2, 3, 4]
- 匿名回调函数不一定要有返回值,返回值一定是给外层函数使用。例如every,some,filter里面的匿名函数会返回布尔值,map返回和item相关的值
归并方法(reduce reduceRight)
总结
- 数组对象重写了object的toString valueOf。join方法和toString相似
- 栈,队列以及操作方法都是对数组项进行更改,只是改变的位置不一样
- 排序,迭代,归并都用到匿名回调函数,方法的逻辑实现都是用到for循环。
0 0
- js 数组方法的理解
- js数组的方法
- JS数组的方法
- js数组的方法
- js数组的方法
- JS数组的方法
- js数组的方法
- 由数组随机化排序引出的对于js中sort()方法的理解分析
- js数组的splice方法
- js Array数组的方法
- js数组的扩展方法
- js数组的splice方法
- js Array数组的方法
- JS数组的遍历方法
- js数组对象的方法
- JS数组的声明方法
- js数组常用的方法
- js数组的forEach()方法
- 算法提高 学霸的迷宫
- Ubuntu 终端的历史记录
- MFC 加入iocomp的ixyplo
- 四、Sybase数据库的常用工具说明
- Java集合框架-综合概述
- js 数组方法的理解
- 重写 重载 多态
- Unity项目导入AndroidStudio
- 高精度模板(第一弹,支持正负数)
- codevs动态规划 数字三角形
- 常用消息队列对比
- HEVC/H.265理论知识(2)——profile、level、tier
- 在ssh连接github时可能出现的问题
- WebGIS中等值面展示的相关方案简析