ES6 数组、对象的扩展
8. 數組的擴展
擴展運算符(...),將一個數組轉為用逗號分隔的參數序列。
- 復制數組 const a2=[...a1]
- 合并數組 [...arr1, ...arr2, ...arr3]; arr1.concat(arr2, arr3);// ES5 的合并數組 這是淺拷貝,如果修改了原數組的成員,會同步反映到新數組。
- 替代函數的 apply 方法 // ES6 的寫法 let arr1 = [0, 1, 2]; let arr2 = [3, 4, 5]; arr1.push(...arr2);
Array.from() 方法用于將兩類對象轉為真正的數組:類似數組的對象(array-like object)和可遍歷(iterable)的對象(包括 ES6 新增的數據結構 Set 和 Map)。
let ps = document.querySelectorAll('p'); Array.from(ps).filter(p => {return p.textContent.length > 100; });Array.of() 方法用于將一組值,轉換為數組
Array.of(3, 11, 8) // [3,11,8]數組實例的 copyWithin()
【替換位置,讀取數據開始位置,結束位置】,如果為負值,表示倒數。
數組實例的 find() 和 findIndex()
find()所有數組成員依次執行該回調函數,直到找出第一個返回值為true的成員,然后返回該成員。如果沒有符合條件的成員,則返回undefined。
findIndex()
fill() 方法使用給定值,填充一個數組
entries(),keys() , values() 用于遍歷數組
keys()是對鍵名的遍歷、values()是對鍵值的遍歷,entries()是對鍵值對的遍歷。
includes() 表示某個數組是否包含給定的值
indexOf方法有兩個缺點,一是不夠語義化,它的含義是找到參數值的第一個出現位置,所以要去比較是否不等于-1,表達起來不夠直觀。二是,它內部使用嚴格相等運算符(===)進行判斷,這會導致對NaN的誤判。
flat(),flatMap()
flat()用于將嵌套的數組“拉平”,變成一維的數組。該方法返回一個新數組,對原數據沒有影響。可以將flat()方法的參數寫成一個整數,表示想要拉平的層數,默認為1,Infinity所有層。如果原數組有空位,跳過空位。
Array.prototype.map(),然后對返回值組成的數組執行flat()方法。該方法返回一個新數組,不改變原數組。
數組的空位
ES6 則是明確將空位轉為undefined。
9. 對象的擴展
屬性、方法簡寫
{f} 等同于 {f:f} method() {return "Hello!"; } //等同于 method: function() {return "Hello!"; }屬性名表達式
obj['a' + 'bc'] = 123;
方法的name屬性返回函數名(即方法名)
Object.is() 比較兩個值是否相等
Object.assign方法用于對象的合并
const target = { a: 1 }; const source1 = { b: 2 }; const source2 = { c: 3 }; Object.assign(target, source1, source2); target // {a:1, b:2, c:3}Object.assign方法的第一個參數是目標對象,后面的參數都是源對象。
注意:如果目標對象與源對象有同名屬性,或多個源對象有同名屬性,則后面的屬性會覆蓋前面的屬性。是淺拷貝
屬性的可枚舉性和遍歷
7.
8.
9.
Object.keys(),Object.values(),Object.entries()
Object.keys() 返回一個數組,所有鍵名
Object.values() 返回一個數組,所有屬性的值
Object.entries() 鍵值對數組 [ ["key", "value"], ["key", value] ]
對象的擴展運算符(...)
和數組相似
轉載于:https://www.cnblogs.com/conglvse/p/9759137.html
總結
以上是生活随笔為你收集整理的ES6 数组、对象的扩展的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 医用计算机考试题目,2015年全国计算机
- 下一篇: linux 部署 ibase4j,iba