手写JavaScript常用数组
/ / 点击 / 阅读耗时 2 分钟数组作为常用的数据结构,在各种需要数据的场景中我们都能够看到,为了巩固自己的基础以及学习。为此记录下数组的几种常用方法以及用原生实现的方案。
join
使用方法
join()方法将一个数组的所有元素连接成一个字符串并返回这个字符串
let arr = [2,0,1,9]
arr.join('-') //result '2-0-1-9'
原生实现
Array.prototype.join = function(char){
let result = this[0] || '' //获取调用数组的第一个值
let length = this.length //获取调用数组的length
for(let i = 1; i<length - 1; i++){
result += char + this[i]
}
return result
}
slice
使用方法
slice() 方法可从已有的数组中返回选定的元素,它有两个参数,从begin截取到end(不包括end)
let arr = [2,0,1,9]
arr.slice(1,3) //result '[0,1]'
原生实现
Array.prototype.slice = function(begin,end){
let result = []
begin = begin || 0
end = end || this.length
for(let i = begin; i<end; i++){
result.push(this[i])
}
return result
}
这个实现方式还是有一点点缺憾,并不支持传递负数参数
sort
使用方法
sort() 方法用原地算法对数组的元素进行排序,并返回数组。
let arr = [2,0,1,9]
arr.sort() //result '[0,1,2,9]'
原生实现
Array.prototype.sort = function(fn){
fn = fn || (a,b) => a-b
let roundCount = this.length - 1
for(let i = 0; i < roundCount; i++){
let minIndex = this[i]
for(let k = i + 1; k < this.length; k++){
if(fn.call(null,this[k],this[i]) < 0){
[this[i], this[k]] = [this[k],this[i]]
}
}
}
}
全文完。