舉個例子,下面是我做好的:
我為了不影響原數組 arr2 我新建立了一個 arr3 ;
可是最後還是被影響了,
var arr3=new arr2;var arr3=new arr2();
這個文法又行不通,怎麼弄呢?
var arr2 =new Array(10,12,16,18,13,14,15,8,7,6,1,5,2 );var arr3=arr2;//重排序;arr3.sort(function(a,b){if(a==b){return 0;}else if(a>b){return -1;}else{return 1;}});console.log( arr2.toString() );console.log( arr3.toString() );
回複內容:
舉個例子,下面是我做好的:
我為了不影響原數組 arr2 我新建立了一個 arr3 ;
可是最後還是被影響了,
var arr3=new arr2;var arr3=new arr2();
這個文法又行不通,怎麼弄呢?
var arr2 =new Array(10,12,16,18,13,14,15,8,7,6,1,5,2 );var arr3=arr2;//重排序;arr3.sort(function(a,b){if(a==b){return 0;}else if(a>b){return -1;}else{return 1;}});console.log( arr2.toString() );console.log( arr3.toString() );
你是想複製出來一個新的數組?那這樣:
var arr1 = [1, 2, 3];var arr2 = arr1.slice();arr2.pop();console.log(arr1);//[1, 2, 3]console.log(arr2);//[1, 2]
深拷貝:
var arr3=arr2.slice();
第一段代碼沒明白什麼意思
第二段代碼中var arr3=arr2;
和你所想的不一樣,你需要補充一下js的基本知識,變數賦值分為傳值和傳址,資料是一個Object,所有的Object賦值都是傳址,所以這裡arr3
就是arr2
也就是[1,2,3]
,你需要將arr2進行一個copy,如@hsfzxjy那樣
var arr2 =new Array(10,12,16,18,13,14,15,8,7,6,1,5,2 );// 對需要排序的數字臨時儲存var arr3= arr2.map(function(el, i) { return el;})//重排序;arr3.sort(function(a,b){if(a==b){return 0;}else if(a>b){return -1;}else{return 1;}});console.log(arr2.toString());//10,12,16,18,13,14,15,8,7,6,1,5,2console.log(arr3.toString());//18,16,15,14,13,12,10,8,7,6,5,2,1