数组的复制
以下是数组复制常用的一些方法,特定的场景利用的特定的方法,只是提供一些思路,有更好的方法欢迎补充!
<script>
// 需求:复制过来的新数据和原来的数据没有任何关系;
var arr = ["a", "b", "c", "d"];
var arr_1 = arr;
arr_1[0] = "abc";
// -----------------------------------------------------------for循环
var arr_1 = [];
for (var i = 0; i < arr.length; i++) {
arr_1[i] = arr[i];
}
arr_1[0] = 10;
//复制后的数组和之前的数组没有任何关系
console.log(arr_1, arr);
// -----------------------------------------------------------forEach循环
var arr_1 = [];
arr.forEach(function(item, index, arr) {
arr_1.push(item);
});
arr_1[0] = 10;
console.log(arr_1, arr);
// -----------------------------------------------------------filter过滤
// 作用:满足过滤条件的元素,组成个新数组返回;
var arr_1 = [];
arr_1 = arr.filter(function(item, index, arr) {
return arr.indexOf(item) != -1; //过滤条件结果为true , 把当前的item组成,到新的数组里;
});
arr_1[0] = 10;
console.log(arr_1, arr);
// ------------------------------------------------------------拼接和截取
// 参数:不传入
// 返回:新数组(和arr一样)
var new_arr = arr.concat();
new_arr[0] = "---------------------";
console.log(new_arr, arr);
// 参数:不传入
// 返回:全部截取,新数组(和arr一样)
var new_arr = arr.slice();
new_arr[0] = "-----------++----------";
console.log(new_arr, arr);
// ------------------------------------------------------------与字符串的互转
var str = arr.join("-");
var new_arr = str.split("-"); // 新数组
new_arr[0] = "-----------++----------";
console.log(new_arr, arr);
</script>