我是靠谱客的博主 悲凉夕阳,最近开发中收集的这篇文章主要介绍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数组常用方法底层你知道多少的全部内容,希望文章能够帮你解决JS数组常用方法底层你知道多少所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部