首页 > 代码库 > js数组增删查改
js数组增删查改
一、插入
1. 顺序插入
1 function Insert(arr, n, data){ 2 3 //若插入数据位置不在表尾 4 if (n < arr.length) 5 { 6 //将要插入位置之后元素依次向后移动一位 7 for (var i = seqList.ListLen - 1; i >= n; i--) 8 { 9 seqList.ListData[i + 1] = seqList.ListData[i]; 10 } 11 } 12 //将数据插入到位置为n的位置并将数组的长度加1 13 seqList.ListData[n-1] = data; 14 seqList.ListLen++; 15 return true; 16 }
二、删除
1. 原型方法
//给Array本地对象增加一个原型方法,它用于删除数组条目中重复的条目(可能有多个),返回值是一个包含被删除的重复条目的新数组。 //the first method------prototype---- Array.prototype.distinct = function(){ var arr=[]; var obj={}; //对象承接 for(var i=0,len=this.length;i<len;i++){ if(!obj[this[i]]){ obj[this[i]]=1; arr.push(this[i]); } } return arr; }; var arr = new Array(); arr.push(1,3,2,4,4,4,5,6,7,8,8,8,9,0); console.log(arr); console.log(arr.distinct());
//the second method-----prototype
Array.prototype.distinct = function(){
var arr=[];
for(var i=0,len=this.length;i<len;i++){
if(this[i]==this[i+1]){
continue;
}else{
arr.push(this[i]);
}
}
return arr;
};
var arr = new Array();
arr.push(1,3,2,4,4,4,5,6,7,8,8,8,9,0);
console.log(arr);
console.log(arr.distinct());
//slice(start,end) 返回的是裁下来的元素数组
console.log(arr.slice(2,4));
console.log(arr);
//splice() 方法与 slice() 方法的作用是不同的,splice() 方法会直接对数组进行修改
arr.splice(0,2,80);
console.log(arr);
//the third method-----前一个和之后全部的元素比较
Array.prototype.distinct = function(){
for(var i=0,len=this.length;i<len;i++){
for(var j=i+1;j<=len;j++){
if(this[i]==this[j]){
console.log(this[j]);
this.splice(j,1);
j--; //得考虑如果删除一个元素,j的值需要减1
len--;
}
}
}
//return this;
};
var arr = new Array();
arr.push("a","b","c","c","b","bb","dd","d","aa","c","bb");
//var cc = arr.splice(5,1)[0];
console.log(arr);
//console.log(cc);
arr.distinct()
console.log(arr);
2. 普通函数
function removeRepeat(arr){ var array=[]; var obj={}; for(var i=0,len=arr.length;i<len;i++){ if(!obj[arr[i]]){ obj[arr[i]]=1; array.push(arr[i]); } } return array; }; var arr = new Array(1,3,2,4,4,4,5,6,7,8,8,8,9,0); var array = removeRepeat(arr); console.log("removeRepeat : " + array); console.log(arr);
三、增加
四、查找
五、排序
/*//-------------冒泡排序(从小到大)------------- for(var i=0,len=arr.length;i<len;i++){ for(var j=i+1;j<len;j++){ if(arr[i]>arr[j]){ //将最大的放在最后 var temp=0; t=arr[i]; arr[i]=arr[j]; arr[j]=temp; } } } //--------第二种(改善)------------ for(var i=1,len=arr.length;i<len;i++){ for(var j=0;j<len-i;j++){ //已经排序好的最大数组不必在比较 if(arr[j]>arr[j+1]){ var temp=0; t=arr[i]; arr[i]=arr[j]; arr[j]=temp; } } } */ /*//-------------选择排序(从小到大)------------- for(var i=0,len=arr.length-1;i<len;i++){ int min = i; for(var j=i+1;j<len;j++){ if(arr[min]>arr[j]){ min=j; } } if(min!=i){ var temp=0; t=arr[min]; arr[min]=arr[i]; arr[i]=temp; } }*/ /*//-------------直接插入排序(从小到大)------------- for (int i = 1; i < arr.Length; i++){ if (arr[i - 1] > arr[i]) { int temp = arr[i]; //每次取出当前的要比较的值 int j = i; while (j > 0 && arr[j - 1] > temp) //大于它的话,要赋值给它 { arr[j] = arr[j - 1]; j--; } arr[j] = temp; } }*/ /*//-------------js实现快速排序(从小到大)-------------*/ /*//-----------------first--------------- var quickSort = function(arr){ var arr = arr.concat(); //concat的新用法(深复制) if(arr.length<=1) return arr; var index = Math.floor(arr.length/2); var centerValue = http://www.mamicode.com/arr.splice(index,1);>*/ //-----------------second--------------- var quickSort = function(arr){ if(arr.length<=1) return arr; var index = Math.floor(arr.length/2); console.log(index); //1 var centerValue = http://www.mamicode.com/arr.slice(index,index+1)[0]; console.log(centerValue); //5 var left = []; var right = []; for(var i=0,len=arr.length;i<len;i++){ if(centerValue>=arr[i]){ left.push(arr[i]); }else{ right.push(arr[i]); } } var res1 = arguments.callee(left); var res2 = arguments.callee(right); return res1.concat(res2); } var arr=[9,8,7,4,5,3,4,77]; //var result = quickSort(arr); //console.log(result); console.log(arr); var aa=[3,4]; //console.log(aa.slice(1,2)); console.log(aa.splice(0,0)); /*//-------------反转排序----------------- for(var i=0,len=arr.length-1;i<len/2;i++){ var temp=0; t=arr[i]; arr[i]=arr[len-1-i]; arr[len-1-i]=temp; }*/ /*//-------------参数排序(从小到大)----------------- function mySort() { var tags = new Array();//使用数组作为参数存储容器 tags = Array.prototype.slice.call(arguments); tags.sort(function(a,b){ return a-b; }) return tags;//返回已经排序的数组 } var result = mySort(50,11,16,32,24,99,57,100); //传入参数个数不确定 console.info(result); //显示结果 */
js数组增删查改