JS数组常用方法底层你知道多少
Posted GHUIJS
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JS数组常用方法底层你知道多少相关的知识,希望对你有一定的参考价值。
forEach(遍历)
Array.prototype.each = function(fn)
for(let i = 0; i < this.length; i++)
fn(this[i],i,this);
push(尾部添加一个或多个,返回数组长度)
Array.prototype.push = function()
for(item in arguments)
this[this.length] = item;
return this.length;
pop(尾部删除一个元素,返回删除元素)
Array.prototype.pop = function()
if(this.length == 0)
return;
let value = this[this.length - 1];
this.length -= 1;
return value;
unshift(头部添加)
Array.prototype.unshift = function()
let result = [];
for(let index in arguments)
result[index] = arguments[index];
for(let item of this)
result[result.length] = item;
this.length = 0;
for(let index in result)
this[index] = result[index];
return this.length;
shift(头部删除)
Array.prototype.shift = function()
let temp = [];
for(let index in this)
temp[index] = this[index];
this.length = 0;
console.log(temp[0],'temp')
for(let i = 0; i < temp.length - 1; i++)
this[i] = temp[i + 1];
return temp[0];
every(判断数组元素是否都满足指定的函数)
Array.prototype.every = function(fn)
for(let i = 0;i < this.length; i++)
if(!fn(this[i],i,this)) return false;
return true;
some(判断数组是否有元素满足指定的元素)
Array.prototype.some = function(fn)
for(let i = 0;i < this.length;i++)
if(fn(this[i],i,this)) return true;
return false;
filter(过滤)
Array.prototype.filter = function(fn)
let reuslt = [];
for(let i = 0;i < this.length;i++)
if(fn(this[i])) reuslt.push(this[i]);
return reuslt;
isArray(判断某对象是否是数组)
Array.prototype.isArray = function()
return Object.prototype.toString.call(value) === '[object Array]';
concat(数组拼接)
Array.prototype.concat = function()
let reuslt = this;
if(arguments.length != 0)
for(let item of arguments)
if(Object.prototype.toString.call(item) === '[object Array]')
for(let items of item)
reuslt[reuslt.length] = items;
else
reuslt[reuslt.length] = item;
console.log(reuslt)
return reuslt;
copyWithin(把数组的一部分元素拷贝到另一部分位置上)
Array.prototype.copyWithin = function(targt,star = 0,end = this.length)
for(let i = targt;i <= (end - star);i++)
this[i] = this[star];
star++;
return this;
fill (固定值填充数组)
Array.prototype.fill = function(value,star = 0,end = this.length)
for(let i = star;i < (end - star); i++)
this[i] = value;
return this;
find(返回数组中满足提供的测试函数的第一个元素的值。否则返回undefined )
Array.prototype.find = function(fn)
for(let i = 0; i < this.length;i++)
if(fn(this[i],i,this)) return this[i];
return;
findIndex(返回满足第一个指定函数元素的下标)
Array.prototype.find = function(fn)
for(let i = 0; i < this.length;i++)
if(fn(this[i],i,this)) return i;
return -1;
includes(数组是否包含一个指定值)
Array.prototype.includes = function(value, fromIndex = 0)
for(let i = fromIndex; i < this.length; i++)
if(this[i] === value)
return true;
return false;
join
Array.prototype.join = function(separator)
if(!this.length)
return ''
else if(this.length === 1)
console.log(1)
return this[0].toString();
else
let str = '';
for (var i = 0; i < this.length; i++)
str += this[i] + `$i < this.length - 1 ? separator : ''`;
return str;
;
先写到这,后续再补,写的不好,多多指教。
以上是关于JS数组常用方法底层你知道多少的主要内容,如果未能解决你的问题,请参考以下文章