转换方法(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