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 = arr.splice(index,1); //console.log(centerValue); 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]); } } // debugger //console.log(quickSort(left)); //console.log(right); var res1 = arguments.callee(left); var res2 = arguments.callee(right); //return left.concat(right); return res1.concat(centerValue,res2); } var arr=[9,8,7,4,5,3,77]; var result = quickSort(arr); console.log(result); console.log(arr);*/ //-----------------second--------------- var quickSort = function(arr){ if(arr.length<=1) return arr; var index = Math.floor(arr.length/2); console.log(index); //1 var centerValue = 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數組增刪查改