JavaScript Set 對象的操作方法現(xiàn)已成為基線標準的一部分,這標志著這些方法在所有主流瀏覽器中都獲得了支持。這一里程碑式的進展意味著,開發(fā)者現(xiàn)在可以使用 JavaScript 中的 Set 方法輕松執(zhí)行諸如交集(intersection)、并集(union)等集合操作。
此網(wǎng)絡(luò)特性已在三大瀏覽器引擎中全面可用,并自 2024 年 6 月 11 日起正式成為基線標準的新增功能。
支持的瀏覽器版本包括:Chrome(122)、Edge(122)、Firefox(127)以及 Safari(127)。
那么,什么是 JavaScript 集合呢?
集合與數(shù)組相似,但每個值在集合中只能存儲一次,確保了值的唯一性。例如,你可以將一組項目列表添加到集合中,然后方便地檢查和處理集合中的結(jié)果。
集合是任何編程語言中都不可或缺的數(shù)據(jù)結(jié)構(gòu)。如今,借助 JavaScript 的內(nèi)置方法,你可以更加便捷地執(zhí)行各種集合操作。
intersection() 方法返回一個新集合,該集合包含了此集合與給定集合中的所有共同元素。例如:
const odds = new Set([1, 3, 5, 7, 9]);
const squares = new Set([1, 4, 9]);
console.log(odds.intersection(squares)); // 輸出:Set(2) { 1, 9 }
在此示例中,odds 集合與 squares 集合的交集是兩個集合中共有的元素 1 和 9,因此 intersection() 方法返回了一個包含這兩個元素的新集合。
union() 方法返回一個新集合,該集合包含了此集合與給定集合中的所有元素,即它們的并集。例如:
const evens = new Set([2, 4, 6, 8]);
const squares = new Set([1, 4, 9]);
console.log(evens.union(squares)); // 輸出:Set(6) { 2, 4, 6, 8, 1, 9 }
在此示例中,evens 集合與 squares 集合的并集是兩個集合中所有的元素 2, 4, 6, 8, 1, 9,因此 union() 方法返回了一個包含這些元素的新集合。
difference() 方法返回一個新集合,該集合包含了此集合中的所有元素,但不包含給定集合中的任何元素,即它們的差集。例如:
const odds = new Set([1, 3, 5, 7, 9]);
const squares = new Set([1, 4, 9]);
console.log(odds.difference(squares)); // 輸出:Set(3) { 3, 5, 7 }
在此示例中,odds 集合與 squares 集合的差集是 odds 集合中除去 squares 集合元素后剩余的元素 3, 5, 7,因此 difference() 方法返回了一個包含這些元素的新集合。
symmetricDifference() 方法返回一個新集合,該集合包含了此集合或給定集合中的所有元素,但不包含同時存在于這兩個集合中的元素,即它們的對稱差集。例如:
const evens = new Set([2, 4, 6, 8]);
const squares = new Set([1, 4, 9]);
console.log(evens.symmetricDifference(squares)); // 輸出:Set(5) { 2, 6, 8, 1, 9 }
在此示例中,evens 集合與 squares 集合的對稱差集是包含在這兩個集合中但不同時存在于它們之中的元素 2, 6, 8, 1, 9,因此 symmetricDifference() 方法返回了一個包含這些元素的新集合。
isSubsetOf() 方法返回一個布爾值,用于指示此集合中的所有元素是否都包含在給定的集合中。例如:
const fours = new Set([4, 8, 12, 16]);
const evens = new Set([2, 4, 6, 8, 10, 12, 14, 16, 18]);
console.log(fours.isSubsetOf(evens)); // 輸出:true
在此示例中,fours 集合中的所有元素 4, 8, 12, 16 都存在于 evens 集合中,因此 isSubsetOf() 方法返回了 true。
isSupersetOf() 方法返回一個布爾值,用于指示給定集合中的所有元素是否都包含在此集合中。例如:
const evens = new Set([2, 4, 6, 8, 10, 12, 14, 16, 18]);
const fours = new Set([4, 8, 12, 16]);
console.log(evens.isSupersetOf(fours)); // 輸出:true
在此示例中,fours 集合中的所有元素 4, 8, 12, 16 都存在于 evens 集合中,因此 isSupersetOf() 方法返回了 true,表明 evens 集合是 fours 集合的超集。
isDisjointFrom() 方法返回一個布爾值,用于指示此集合與給定集合是否沒有公共元素,即它們是否是互不重疊的。例如:
const primes = new Set([2, 3, 5, 7, 11, 13, 17, 19]);
const squares = new Set([1, 4, 9, 16]);
console.log(primes.isDisjointFrom(squares)); // 輸出:true
在此示例中,primes 集合與 squares 集合沒有公共元素,因此 isDisjointFrom() 方法返回了 true,表明這兩個集合是互不重疊的。
Set 方法的普及顯著提升了代碼的可讀性與性能。通過內(nèi)置的 intersection()、union()、difference() 和 symmetricDifference() 等方法,開發(fā)者得以摒棄繁瑣的自定義邏輯,采用直觀易懂的代碼實現(xiàn)集合操作,同時充分利用了瀏覽器優(yōu)化,提升了性能。此外,這些方法的標準化確保了跨瀏覽器的一致性,簡化了開發(fā)流程,并降低了技術(shù)債務(wù),使代碼更易于維護和擴展。
該文章在 2024/8/21 12:08:42 編輯過