文享日志

数组的合并,去重,删除操作

JavaScript

发表于2017年10月07日14:00:06

0条评论 178次阅读

var _arr1 = [1,3,2,22,3,6];
var _arr2 = [2,6,4,7,9,1,5];

//合并两个数组
function con(arr1,arr2){
	function temp(arr2){
		for(var i = arguments.length -1 ; i >= 0 ; i--){
			arr1.push(arguments[i])
		}
	}
	temp.apply(this,arr2);
	return arr1;
}

function con2(_arr1,_arr2){
	_arr1.forEach(function(item){
		_arr2.push(item);
	})
	return _arr2 ;	
}

//concat返回的是副本
console.log(_arr1.concat(_arr2));
console.log(con(_arr1,_arr2));


//数组去重
var has = function(iarr,item){

	// for(var i = 0 ; i < iarr.length ; i++){
	// 	if(iarr[i]===item){
	// 		return true ;
	// 	}
	// }

	return iarr.some(function(i_item,idx){
		return i_item === item;
	})
}

function qc(arr){
	var temp_arr = [];

	arr.forEach(function(item){
		if(!has(temp_arr,item)){
			temp_arr.push(item);			
		}
	})
	return temp_arr;
}

//Zepto中的方法,自己写没写出来。。。
//这种写法还有个好处就是没有改变原操作数。
var qc2 = function(array) {
  return array.filter(function(item, idx) {
    return array.indexOf(item) == idx
  })
}



//删除数组中某元素
var del_arr = function(array){
	var iflag = arguments[1];
	var type = typeof iflag ;
	var iDelete = function(idx){
		for(var i = +idx-1 ; i < array.length ;i++){
			array[i] = array[i+1];
		}
		array.length--;		
	}
	if(type === 'number'){
		iDelete(iflag);
	}else if(type === 'string'){
		!has(array,iflag)?array:iDelete(array.indexOf(item)+1)
	}else{
		//没传入参数,或传入什么乱七八糟的。
		//array指针指向空数组,原先array指向的空间如果没有其他指针指向,会被浏览器垃圾回收机制处理掉。
		array = [];
	}
	return array;
}

console.log(del_arr(['a','b','c','d'],'e'))


👍 0  👎 0
共有0条评论

发表新评论

提交

广告展示

腾讯云推广 阿里云推广