ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
> 展开运算符,将一个数组转为用逗号分隔的参数序列 ~~~ //合并数组 let a = [1,2,3]; let b = [4,5,6]; let c = [...a,...b]; // [1,2,3,4,5,6] //替代apply function f(a,b,c){ console.log(a,b,c) } let args = [1,2,3]; // 以下三种方法结果相同 f.apply(null,args) f(...args) f(1,2,3) function f2(...args){ console.log(args) } f2(1,2,3) // [1,2,3] function f3(){ console.log(Array.from(arguments)) } f3(1,2,3) // [1,2,3] Array.from() 可以通过以下方式来创建数组对象: //伪数组对象(拥有一个 length 属性和若干索引属性的任意对象) //可迭代对象(可以获取对象中的元素,如 Map和 Set 等) let a = [1,2,3]; let b = [4,5,6]; Array.prototype.push.apply(a,b); // 或 a.push(...b) // 两种方法取其一 //解构赋值 let a = [1,2,3,4,5,6] let [c,...d] = a console.log(c); // 1 console.log(d); // [2,3,4,5,6] //展开运算符必须放在最后一位字符串转为数组,正确识别 32 位的 Unicode 字符 [...'siva'] // ['s','i','v','a'] [...'x\uD83D\uDE80y'].length // 3 //具有 Iterator 接口的对象,转换成数组 var nodelist = document.querySelectorAll('div'); console.log([...nodelist]) // 转化成数组 var map = new Map([[1,11],[2,22],[3,33]]); console.log([...map.keys()]); // [1,2,3] //浅拷贝 //数组 var a = [1,2,4] var b = [...a] a.push(6) console.log(b) // [1,2,4] //对象 var a = {a:1} var b = {...a} a.a = 5 console.log(b.a) // 1 ~~~