您好,欢迎访问一九零五行业门户网

JavaScript 怎么对数组进行 回调操作 的不影响原数组?

举个例子,下面是我做好的:
我为了不影响原数组 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
其它类似信息

推荐信息