一、数组的复制
1、使用concat()
var arr1=[1,2,3];
var arr2=arr1.concat();
arr2.push(4);
console.log('arr1的值为:'+arr1);
console.log('arr2的值为:'+arr2);
效果图如下所示
2、使用slice()
var arr1=[1,2,3];
var arr2=arr1.slice();
arr2.push(4);
console.log('arr1的值为:'+arr1);
console.log('arr2的值为:'+arr2);
效果图如下所示
3、使用Array.from()
var arr1=[1,2,3];
var arr2=Array.from(arr1);
arr2.push(4);
console.log('arr1的值为:'+arr1);
console.log('arr2的值为:'+arr2);
效果图如下所示
二、类数组转换为数组
应用:将JS获取的元素集合或NodeList转换为数组1、使用[].slice.apply()
var list=document.getElementsByTagName("*");
var arr=[].slice.apply(list);
console.log(list);
console.log(arr);
效果图如下所示
2、使用Array.prototype.slice.apply();
var list=document.getElementsByTagName("*");
var arr=Array.prototype.slice.apply(list);
console.log(list);
console.log(arr);
效果图如下所示
3、使用Array.from()
var list=document.getElementsByTagName("*");
var arr=Array.from(list);
console.log(list);
console.log(arr);
效果图如下所示
三、备注(Array.from()详解)
1、Array.from()简介
有两个参数,第一个参数为数组、类数组、有length的属性的字符串或json对象等,第二个参数为回调函数
Array.from([2,3,4],(value,index)=>{
console.log("value的值为:"+value);
console.log("index的值为:"+index);
});
//注意:回调函数的第一个参数为value值,第二个为下标
效果图如下所示
2、不使用for类循环(forIn、forOf等)生成0-99
Array.from({length:100},(val,i)=>i);
效果图如下所示
还有一种方法
var arr=Array.prototype.fill.call(new Array(100),0);
arr.map((val,i)=>i);
效果图如下所示