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
原创粉丝点击