[TOC] > Sat May 15 2021 22:54:44 GMT+0800 (GMT+08:00) JavaScript 的数组需要留意的是原数组的改变与否,一个很典型的例子: ```js let arr1 = [1,2,3,4,5] let arr2 = arr1 arr2.pop() arr1.push("A") console.log("arr1:") console.table(arr1) console.log("arr2:") console.table(arr2) ``` arr1 和 arr2 都变了,`arr2 = arr1` 并不是对 arr1 的克隆,在内存中,arr1 和 arr2 都指向同一个位置致使一个改变了另一个也跟着改变(读取的是同一数据)。 我们将其改为拷贝: ```js let arr1 = [1,2,3,4,5] let arr2 = Array.from(arr1) // ok // let arr2 = [...arr1] // ok // let [...arr2] = arr1 // ok // let arr2 = arr1.concat() //ok //arr2.pop() arr1.pop() console.log("arr1:") console.table(arr1) console.log("arr2:") console.table(arr2) ``` 至于排序、分拆、查值等倒是多试试就出来了,但这种情况对没系统学过 JavaScript 的朋友会很困惑。你猜的没错,包括我自己…… > `[{...},...]` 这种类型的数组,大家自行研究吧……