js 数组方法的理解

    xiaoxiao2021-03-25  127

    转换方法(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循环。
    转载请注明原文地址: https://ju.6miu.com/read-4097.html

    最新回复(0)