JS中快速复制数组的方法

一、 错误实现
vararray1= newArray("1","2","3");
vararray2;
array2=array1;
array1.length=0;
alert(array2); // 返回为空

这种做法是错的,因为javascript分原始类型与引用类型(与java、c#类似)。Array是引用类

型。array2得到的是引用,所以对array1的修改会影响到array2。

二、 使用slice()

可使用slice()进行复制,因为slice()返回也是数组。

vararray1=newArray("1","2","3");
vararray2;
array2=array1.slice(0);
array1.length=0;
alert(array2);//返回1、2、3

三、 使用concat()

注意concat()返回的并不是调用函数的Array,而是一个新的Array,所以可以利用这一点进行复制。

vararray1=newArray("1","2","3");
vararray2;
array2
=array1.concat();
array1.length
=0;
alert(array2);
//返回1、2、3

四、 测试

<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<metahttp-equiv="Content-Type"content="text/html;charset=utf-8">
<title>ArrayTest</title>
<scripttype="text/javascript">
vararray1;
vararray2;

functionclone1(){
array1
=newArray("1","2","3");
array2
=array1;
array1.length
=0;
alert(array2);
}

functionclone2(){
array1
=newArray("1","2","3");
array2
=array1.slice(0);
array1.length
=0;
alert(array2);
}

functionclone3(){
array1
=newArray("1","2","3");
array2
=array1.concat();
array1.length
=0;
alert(array2);
}

</script>

</head>
<body>
<inputtype="button"value="clone1"onclick="clone1()"/><br/>
<inputtype="button"value="clone2"onclick="clone2()"/><br/>
<inputtype="button"value="clone3"onclick="clone3()"/><br/>
</body>
</html>

转载自 编程知识

### JavaScript 创建并返回新数组方法JavaScript 中,可以通过多种方式创建并返回一个新数组。以下是几种常见的实现方法及其示例。 #### 使用 `map` 方法 `map` 方法会对调用它的数组中的每个元素执行一次提供的函数,并返回由每次函数调用的结果组成的新数组[^2]。 ```javascript const originalArray = [1, 2, 3]; const newArray = originalArray.map(item => item * 2); // 原始数组保持不变:originalArray -> [1, 2, 3] // 返回的新数组:newArray -> [2, 4, 6] ``` #### 自定义函数返回新数组 可以编写自定义函数来创建并返回一个新数组。通过使用 `Array.prototype.slice()` 或其他不改变原始数组的操作符,确保不会影响原数组。 ```javascript function createNewArray(originalArray) { const result = []; for (let i = 0; i < originalArray.length; i++) { result.push(originalArray[i] * 2); // 对每个元素乘以 2 并存入新数组 } return result; } const originalArray = [1, 2, 3]; const newArray = createNewArray(originalArray); // 原始数组保持不变:originalArray -> [1, 2, 3] // 返回的新数组:newArray -> [2, 4, 6] ``` #### 利用扩展运算符 (`...`) 扩展运算符可以在表达式中展开可迭代对象(如数组),从而轻松复制或转换数组为新数组。 ```javascript const originalArray = [1, 2, 3]; const newArray = [...originalArray]; // 复制数组到新数组 // 如果需要进一步处理,可以直接在此基础上操作 const processedArray = newArray.map(item => item + 1); // 原始数组保持不变:originalArray -> [1, 2, 3] // 返回的新数组:processedArray -> [2, 3, 4] ``` #### 结合高阶函数与箭头函数 利用高阶函数和箭头函数的简洁特性,也可以快速构建返回新数组的功能。 ```javascript const transformArray = (arr, func) => arr.map(func); const originalArray = [1, 2, 3]; const newArray = transformArray(originalArray, x => x ** 2); // 原始数组保持不变:originalArray -> [1, 2, 3] // 返回的新数组:newArray -> [1, 4, 9] ``` 以上展示了如何在 JavaScript 中创建并返回新数组的不同方法。每种方法都有其适用场景,可以根据具体需求选择合适的方式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值