基元數據類型:boolean、int、uint、number、string
兩種復雜數據類型:array、object
當數組元素全部是基元數據類型時,即全部是值類型時,是沒有淺復制和深復制的區別。
當數組元素全部是復雜數據類型,即引用類型時,復制有2種選擇,淺復制和深復制。
當數組元素部分是基元數據,部分是復雜數據時,這時候,對于基元數據類型的元素,采用哪種復制方式效果都一樣。
只有對于復雜數據元素,才有淺復制和深復制的區別。
?
淺復制:調用原數組的slice或concat方法,不傳任何參數。淺復制生成的新數據,各個元素存放的只是引用。2個數組中
相同位置的元素存放的引用指向同一個對象,如果對該元素操作,等于就是操作引用指向的對象。如果對象狀態發生變化,
也會影響到另一個數組中對應位置的元素。
深復制:生成的新數組,其所有元素都是真正的原數據元素的備份,這個時候相同位置的元素,存放的是不同的引用,指向不同的對象。但是這2個對象的狀態是完全一致的。
**==運算符,對于引用類型,判斷的是變量持有對象的引用是否相同,而不是內容相同。對于值類型,是通過value來判斷的。
?
操作數組中的每個元素:
foreach (遍歷操作): 操作數組中的每一個元素,回調函數不需要返回值。
filter(過濾):將符合條件的元素提出來,構成一個新的數組返回。回調函數返回單個新數組元素。
map(映射器):根據回調函數操作數組每個元素,并利用回調函數的結果生成新的數組。回調函數返回單個新數組元素。
some(有一個滿足則為真):只要有一個元素能讓回調函數返回true,則some()返回true,否則為false.回調函數返回單個元素比較結果。
every(全員滿足才為真):必須所有元素都讓回調函數返回true,every()才返回true,否則為false.回調函數返回單個元素比較結果。