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数组常用方法底层你知道多少的主要内容,如果未能解决你的问题,请参考以下文章

前端算法入门:刷算法题常用的 JS 基础扫盲

JS常用方法

js常用方法-----数组

数组中常用的方法

js数组字符串常用方法

JS你可能还不知道的一些知识点