تا ØØ§Ùا ٠ا Ø¯Ø±Ø¨Ø§Ø±Ù Ø³Ø§Ø®ØªØ§Ø±ÙØ§Û داد٠پÛÚÛØ¯Ù Ø²ÛØ± Ø¢Ø´ÙØ§ شدÛÙ :
- Ø´ÛØ¡Ùا Ø¨Ø±Ø§Û Ø°Ø®ÛØ±ÙâØ³Ø§Ø²Û Ù Ø¬Ù ÙØ¹ÙâÙØ§Û Ú©ÙÛØ¯Ø¯Ø§Ø± Ø§Ø³ØªÙØ§Ø¯Ù Ù ÛâØ´ÙÙØ¯.
- آراÛÙâÙØ§ Ø¨Ø±Ø§Û Ø°Ø®ÛØ±ÙâØ³Ø§Ø²Û Ù Ø¬Ù ÙØ¹ÙâÙØ§Û ØªØ±ØªÛØ¨Û Ø§Ø³ØªÙØ§Ø¯Ù Ù ÛâØ´ÙÙØ¯.
اÙ
ا اÛÙÙØ§ در Ø²ÙØ¯Ú¯Û ÙØ§ÙØ¹Û Ú©Ø§ÙÛ ÙÛØ³ØªÙد. ب٠ÙÙ
Û٠دÙÛ٠است Ú©Ù Map Ù Set ÙØ¬Ùد Ø¯Ø§Ø±ÙØ¯.
ساختار Map
Map Ù
جÙ
ÙØ¹ÙâØ§Û Ø§Ø² دادÙâÙØ§Û Ú©ÙÛØ¯Ø¯Ø§Ø± Ø§Ø³ØªØ Ø¯Ø±Ø³Øª Ù
اÙÙØ¯ Object. اÙ
ا ØªÙØ§Ùت اصÙÛ Ø¢ÙÙØ§ اÛ٠است Ú©Ù Map اجاز٠Ù
ÛâØ¯ÙØ¯ Ú©Ù Ú©ÙÛØ¯Ùا از ÙØ± ÙÙØ¹Û Ø¨Ø§Ø´ÙØ¯.
Ù ØªØ¯ÙØ§ Ù ÙÛÚÚ¯ÛâÙØ§Û Ø¢Ù:
new Map()â map را Ù ÛâØ³Ø§Ø²Ø¯.map.set(key, value)â value را Ø¨Ù ÙØ§Ø³Ø·Ù key Ø°Ø®ÛØ±Ù Ù ÛâÚ©ÙØ¯.map.get(key)â Ù ÙØ¯Ø§Ø± را Ø¨Ù ÙØ§Ø³Ø·Ù key بر٠ÛâÚ¯Ø±Ø¯Ø§ÙØ¯Ø اگرkeyدر map ÙØ¬Ùد ÙØ¯Ø§Ø´ØªÙ باشدundefinedØ¨Ø±Ú¯Ø±Ø¯Ø§ÙØ¯Ù Ù ÛâØ´ÙØ¯.map.has(key)â Ø§Ú¯Ø±keyÙØ¬Ùد داشت٠باشدtrueØ¨Ø±Ú¯Ø±Ø¯Ø§ÙØ¯Ù Ù ÛâØ´ÙØ¯Ø در ØºÛØ± اÛÙ ØµÙØ±Øªfalse.map.delete(key)â Ø§Ù٠ا٠(Ø¬ÙØª key/value) را Ø¨Ù ÙØ§Ø³Ø·Ù key ØØ°Ù Ù ÛâÚ©ÙØ¯.map.clear()â ÙÙ Ù ÚÛØ² را از map ØØ°Ù Ù ÛâÚ©ÙØ¯.map.sizeâ ØªØ¹Ø¯Ø§Ø¯ اÙ٠اÙâÙØ§Û Ú©ÙÙÙÛ Ø±Ø§ بر٠ÛâÚ¯Ø±Ø¯Ø§ÙØ¯.
Ø¨Ø±Ø§Û Ù Ø«Ø§Ù:
let map = new Map();
map.set('1', 'str1'); // ÛÚ© Ú©ÙÛØ¯ رشتÙâØ§Û
map.set(1, 'num1'); // ÛÚ© Ú©ÙÛØ¯ عددÛ
map.set(true, 'bool1'); // boolean ÛÚ© Ú©ÙÛØ¯
// Ø´ÛØ¡ را Ø¨Ù ÛØ§Ø¯ Ø¯Ø§Ø±ÛØ¯Ø Ø´ÛØ¡ Ú©ÙÛØ¯Ùا را ب٠رشت٠تبدÛÙ Ù
Ûâکرد
// :ÙÙØ¹ را ØÙظ Ù
ÛâÚ©ÙØ¯Ø پس اÛÙ Ø¯Ù ØªÙØ§Ùت Ø¯Ø§Ø±ÙØ¯ Map
alert( map.get(1) ); // 'num1'
alert( map.get('1') ); // 'str1'
alert( map.size ); // 3
ÙÙ Ø§ÙØ·Ùر Ú©Ù Ù ÛâØ¨ÛÙÛÙ Ø Ø¨Ø±Ø®ÙØ§Ù Ø´ÛØ¡ÙØ§Ø Ú©ÙÛØ¯Ùا ب٠رشت٠تبدÛÙ ÙÙ ÛâØ´ÙÙØ¯. ÙØ± ÙÙØ¹ از Ú©ÙÛØ¯ ا٠کاÙâÙ¾Ø°ÛØ± است.
map[key] Ø±Ø§Ù Ø¯Ø±Ø³ØªÛ Ø¨Ø±Ø§Û Ø§Ø³ØªÙØ§Ø¯Ù از Map ÙÛØ³ØªØ§Ú¯Ø±ÚÙ map[key] ÙÙ
کار Ù
ÛâÚ©ÙØ¯Ø Ø¨Ø±Ø§Û Ù
ثا٠Ù
ا Ù
ÛâØªÙØ§ÙÛÙ
بÙÙÛØ³ÛÙ
map[key] = 2Ø Ø§Û٠کار ÛØ¹ÙÛ Ø¨Ø§map` Ù
اÙÙØ¯ ÛÚ© Ø´ÛØ¡ Ø³Ø§Ø¯Ù Ø¬Ø§ÙØ§Ø§Ø³Ú©Ø±Ûپت کار Ú©ÙÛÙ
Ø Ù¾Ø³ باعث Ø§ÛØ¬Ø§Ø¯ تÙ
اÙ
Ù
ØØ¯ÙØ¯ÛØªâÙØ§Û Ù
ØªÙØ§Ø¸Ø± Ù
ÛâØ´ÙØ¯ (ÙÙØ· Ú©ÙÛØ¯ÙØ§Û Ø±Ø´ØªÙâØ§Û/سÙ
بÙÛ Ù
جاز Ø®ÙØ§Ùد Ø¨ÙØ¯ ٠دÛگر Ù
ØØ¯ÙØ¯ÛØªâÙØ§).
پس Ù
ا Ø¨Ø§ÛØ¯ از Ù
ØªØ¯ÙØ§Û map Ø§Ø³ØªÙØ§Ø¯Ù Ú©ÙÛÙ
: setØ get Ùâ¦
ساختار Map Ù ÛâØªÙØ§Ùد از Ø´ÛØ¡Ùا Ù٠ب٠عÙÙØ§Ù Ú©ÙÛØ¯ Ø§Ø³ØªÙØ§Ø¯Ù Ú©ÙØ¯.
Ø¨Ø±Ø§Û Ù Ø«Ø§Ù:
let john = { name: "John" };
// Ø¨ÛØ§ÛÛØ¯ Ø¨Ø±Ø§Û ÙØ± کاربر تعداد Ø¯ÙØ¹Ø§Øª Ø¨Ø§Ø²Ø¯ÛØ¯Ø´Ø§Ù را Ø°Ø®ÛØ±Ù Ú©ÙÛÙ
let visitsCountMap = new Map();
// Ú©ÙÛØ¯ است map Ø¨Ø±Ø§Û john
visitsCountMap.set(john, 123);
alert( visitsCountMap.get(john) ); // 123
Ø§Ø³ØªÙØ§Ø¯Ù از Ø´ÛØ¡Ùا ب٠عÙÙØ§Ù Ú©ÙÛØ¯ ÛÚ©Û Ø§Ø² ÙÛÚÚ¯ÛâÙØ§Û Ù
ÙÙ
Ù ÙØ§Ø¨Ù ØªÙØ¬Ù Map است. ÚÙÛÙ ÚÛØ²Û Ø¨Ø±Ø§Û Object Ù
Ù
Ú©Ù ÙÛØ³Øª. رشت٠ب٠عÙÙØ§Ù Ú©ÙÛØ¯ در Object Ù
Ø´Ú©ÙÛ ÙØ¯Ø§Ø±Ø¯Ø اÙ
ا Ù
ا ÙÙ
ÛâØªÙØ§ÙÛÙ
از ÛÚ© Object دÛگر ب٠عÙÙØ§Ù Ú©ÙÛØ¯ در Object Ø§Ø³ØªÙØ§Ø¯Ù Ú©ÙÛÙ
.
Ø¨ÛØ§ÛÛØ¯ Ø§Ù ØªØØ§Ù Ú©ÙÛÙ :
let john = { name: "John" };
let ben = { name: "Ben" };
let visitsCountObj = {}; // Ø§Ø³ØªÙØ§Ø¯Ù از ÛÚ© Ø´ÛØ¡
visitsCountObj[ben] = 234; // ب٠عÙÙØ§Ù Ú©ÙÛØ¯ ben Ø§Ø³ØªÙØ§Ø¯Ù از Ø´ÛØ¡
visitsCountObj[john] = 123; // Ù
ÛâØ´ÙØ¯ ben ب٠عÙÙØ§Ù Ú©ÙÛØ¯ ک٠جاÛگزÛÙ Ø´ÛØ¡ john Ø§Ø³ØªÙØ§Ø¯Ù از Ø´ÛØ¡
// !اÛÙ ÚÛØ²Û است Ú©Ù ÙÙØ´ØªÙ شدÙ
alert( visitsCountObj["[object Object]"] ); // 123
ب٠دÙÛ٠اÛÙ Ú©Ù visitsCountObj ÛÚ© Ø´ÛØ¡ Ø§Ø³ØªØ ØªÙ
اÙ
Ú©ÙÛØ¯ÙØ§Û Object Ù
اÙÙØ¯ john Ù ben در Ø¨Ø§ÙØ§ را ب٠رشت٠"[object Object]" تبدÛÙ Ù
ÛâÚ©ÙØ¯. ÙØ·Ø¹Ø§ ÚÛØ²Û ÙÛØ³Øª Ú©Ù Ù
ا Ø¨Ø®ÙØ§ÙÛÙ
.
MapØ¨Ø±Ø§Û Ø¢Ø²Ù
Ø§ÛØ´ Ø¨Ø±Ø§Ø¨Ø±Û Ú©ÙÛØ¯ÙØ§Ø Map از اÙÚ¯ÙØ±ÛتÙ
SameValueZero Ø§Ø³ØªÙØ§Ø¯Ù Ù
ÛâÚ©ÙØ¯. اÛ٠اÙÚ¯ÙØ±ÛتÙ
ØªÙØ±Ûبا با Ù
ÙØ§ÛØ³Ù Ø¨Ø±Ø§Ø¨Ø±Û Ø³Ø®ØªâÚ¯ÛØ±Ø§ÙÙ === ÛÚ©Ø³Ø§Ù Ø§Ø³ØªØ Ø§Ù
ا ØªÙØ§Ùت اÛ٠است Ú©Ù NaN با NaN ÛÚ©Ø³Ø§Ù ÙØ±Ø¶ Ù
ÛâØ´ÙØ¯. پس NaN ÙÙ
Ù
ÛâØªÙØ§Ùد ب٠عÙÙØ§Ù Ú©ÙÛØ¯ Ø§Ø³ØªÙØ§Ø¯Ù Ø´ÙØ¯.
اÛ٠اÙÚ¯ÙØ±Ûت٠ÙÙ ÛâØªÙØ§Ùد تغÛÛØ± Ø¯Ø§Ø¯Ù ÛØ§ شخصÛâØ³Ø§Ø²Û Ø´ÙØ¯.
تÙ
اÙ
map.setÙØ§ Ø®ÙØ¯ map را برÙ
ÛâگرداÙÙØ¯Ø پس Ù
ا Ù
ÛâØªÙØ§ÙÛÙ
ÙØ±Ø§Ø®ÙاÙÛâÙØ§ را Ø¨Ù ØµÙØ±Øª Â«Ø²ÙØ¬ÛرÙâØ§Û» Ø§ÙØ¬Ø§Ù
دÙÛÙ
:
map.set('1', 'str1')
.set(1, 'num1')
.set(true, 'bool1');
ØÙÙ٠زد٠در Map
Ø¨Ø±Ø§Û ØÙÙ٠زد٠در map 3 Ù
تد ÙØ¬Ùد دارد:
map.keys()â ÛÚ© ØÙÙÙâÙ¾Ø°ÛØ± Ø¨Ø±Ø§Û Ú©ÙÛØ¯Ùا بر٠ÛâÚ¯Ø±Ø¯Ø§ÙØ¯Ømap.values()â ÛÚ© ØÙÙÙâÙ¾Ø°ÛØ± Ø¨Ø±Ø§Û Ù ÙØ¯Ø§Ø±Ùا بر٠ÛâÚ¯Ø±Ø¯Ø§ÙØ¯Ømap.entries()â ÛÚ© ØÙÙÙâÙ¾Ø°ÛØ± Ø¨Ø±Ø§Û Ø¨Ø±Ø§Û Ø§Ø·ÙØ§Ø¹Ø§Øª ب٠شکÙ[key, value]بر٠ÛâÚ¯Ø±Ø¯Ø§ÙØ¯ Ú©Ù Ø¨Ù ØµÙØ±Øª Ù¾ÛØ´âÙØ±Ø¶ درfor..ofØ§Ø³ØªÙØ§Ø¯Ù Ù ÛâØ´ÙØ¯.
Ø¨Ø±Ø§Û Ù Ø«Ø§Ù:
let recipeMap = new Map([
['cucumber', 500],
['tomatoes', 350],
['onion', 50]
]);
// در Ú©ÙÛØ¯Ùا ØÙÙ٠بز٠(Ø³Ø¨Ø²ÛØ¬Ø§Øª)
for (let vegetable of recipeMap.keys()) {
alert(vegetable); // cucumber, tomatoes, onion
}
// در Ù
ÙØ¯Ø§Ø±Ùا ØÙÙ٠بز٠(Ù
ÛØ²Ø§Ù Ø¢ÙâÙØ§)
for (let amount of recipeMap.values()) {
alert(amount); // 500, 350, 50
}
// ØÙÙ٠بز٠[key, value] در Ø§Ø·ÙØ§Ø¹Ø§Øª ب٠شکÙ
for (let entry of recipeMap) { // recipeMap.entries() Ù
شاب٠با
alert(entry); // (٠بÙÛÙ Ø§Ø·ÙØ§Ø¹Ø§Øª) cucumber,500
}
ØÙÙ٠زد٠با ÙÙ
Ø§Ù ØªØ±ØªÛØ¨Û Ú©Ù Ù
ÙØ¯Ø§Ø±Ùا اضاÙ٠شدÙâØ§ÙØ¯ Ø§ÙØ¬Ø§Ù
Ù
ÛâØ´ÙØ¯. Ø¨Ø±Ø®ÙØ§Ù ÛÚ© Object Ù
عÙ
ÙÙÛØ Map اÛÙ ØªØ±ØªÛØ¨ را ØÙظ Ù
ÛâÚ©ÙØ¯.
Ø¹ÙØ§Ù٠بر Ø¢ÙØ Map ÛÚ© Ù
تد forEach درÙÙâØ³Ø§Ø®Øª ÙÙ
Ø¯Ø§Ø±Ø¯Ø Ø¯Ø±Ø³Øª شبÛ٠ب٠Array:
// اجرا Ù
ÛâØ´ÙØ¯ (key,value) تابع Ø¨Ø±Ø§Û ÙØ± Ø¬ÙØª
recipeMap.forEach( (value, key, map) => {
alert(`${key}: ${value}`); // Ù ØºÛØ±Ù cucumber: 500
});
٠تد Object.entries: Ø§ÛØ¬Ø§Ø¯ Map از Object
زÙ
اÙÛ Ú©Ù ÛÚ© Map ساخت٠Ù
ÛâØ´ÙØ¯Ø Ù
ا Ù
ÛâØªÙØ§ÙÛÙ
Ø¨Ø±Ø§Û Ù
ÙØ¯Ø§Ø±Ø¯ÙÛ Ø§ÙÙÛÙØ ÛÚ© آراÛÙ (ÛØ§ ÙØ± ØÙÙÙâÙ¾Ø°ÛØ± دÛگرÛ) را با Ø¬ÙØªâÙØ§Û Ú©ÙÛØ¯/Ù
ÙØ¯Ø§Ø± در آ٠بÙÙÛØ³ÛÙ
Ø Ù
ث٠اÛÙØ¬Ø§:
// [key, value] آراÛÙâØ§Û Ø§Ø² Ø¬ÙØªâÙØ§Û
let map = new Map([
['1', 'str1'],
[1, 'num1'],
[true, 'bool1']
]);
alert( map.get('1') ); // str1
اگر Ù
ا ÛÚ© Ø´ÛØ¡ ساد٠دارÛÙ
Ù Ø¨Ø®ÙØ§ÙÛÙ
از Ø¢Ù ÛÚ© Map بسازÛÙ
Ø Ù
ÛâØªÙØ§ÙÛÙ
از Ù
تد درÙÙâØ³Ø§Ø®Øª Object.entries(obj) Ø§Ø³ØªÙØ§Ø¯Ù Ú©ÙÛÙ
Ú©Ù Ø¨Ø±Ø§Û ÛÚ© Ø´ÛØ¡ آراÛÙâØ§Û Ø§Ø² Ø¬ÙØªâÙØ§Û Ú©ÙÛØ¯/Ù
ÙØ¯Ø§Ø± را دÙÛÙØ§ در ÙÙ
Ø§Ù ÙØ±Ù
ت برÙ
ÛâÚ¯Ø±Ø¯Ø§ÙØ¯.
Ø¨ÙØ§Ø¨Ø±Ø§Û٠٠ا Ù ÛâØªÙØ§ÙÛ٠ب٠اÛÙ ØµÙØ±Øª از Ø´ÛØ¡ ÛÚ© map بسازÛÙ :
let obj = {
name: "John",
age: 30
};
let map = new Map(Object.entries(obj));
alert( map.get('name') ); // John
اÛÙØ¬Ø§ Object.entries ÛÚ© آراÛ٠از Ø¬ÙØªâÙØ§Û Ú©ÙÛØ¯/Ù
ÙØ¯Ø§Ø± برÙ
ÛâÚ¯Ø±Ø¯Ø§ÙØ¯: [ ["name","John"], ["age", 30] ]. اÛÙ ÚÛØ²Û است Ú©Ù Map ÙÛØ§Ø² دارد.
٠تد Object.fromEntries: Ø§ÛØ¬Ø§Ø¯ Object از Map
Ù
ا Ø¨Ù ØªØ§Ø²Ú¯Û Ø¯ÛØ¯ÛÙ
Ú©Ù ÚÚ¯ÙÙ٠از ÛÚ© Ø´ÛØ¡ ساد٠با Ø§Ø³ØªÙØ§Ø¯Ù از Object.entries(obj) ÛÚ© Map بسازÛÙ
.
Ù
تد Object.fromEntries کار برعکس آ٠را Ø§ÙØ¬Ø§Ù
Ù
ÛâØ¯ÙØ¯: با داد٠ÛÚ© آراÛ٠از Ø¬ÙØªâÙØ§Û [key, value] Ø¨Ù Ø¢ÙØ ÛÚ© Ø´ÛØ¡ از Ø¢ÙÙØ§ Ù
ÛâØ³Ø§Ø²Ø¯:
let prices = Object.fromEntries([
['banana', 1],
['orange', 2],
['meat', 4]
]);
// prices = { banana: 1, orange: 2, meat: 4 } ØØ§Ùا دارÛÙ
alert(prices.orange); // 2
Ù
ÛâØªÙØ§ÙÛÙ
از Object.fromEntries Ø¨Ø±Ø§Û Ø³Ø§Ø®Øª ÛÚ© Ø´ÛØ¡ ساد٠از Map Ø§Ø³ØªÙØ§Ø¯Ù Ú©ÙÛÙ
.
Ø¨Ø±Ø§Û Ù
ثا٠Ù
ا داد٠را در ÛÚ© Map Ø¯Ø®ÛØ±Ù Ù
ÛâÚ©ÙÛÙ
اÙ
ا ÙÛØ§Ø² دارÛÙ
ک٠آ٠را ب٠ÛÚ© کد شخص Ø«Ø§ÙØ« بدÙÛÙ
Ú©Ù ÛÚ© Ø´ÛØ¡ ساد٠را ÙØ¨ÙÙ Ù
ÛâÚ©ÙØ¯.
Ø´Ø±ÙØ¹ Ù ÛâÚ©ÙÛÙ :
let map = new Map();
map.set('banana', 1);
map.set('orange', 2);
map.set('meat', 4);
let obj = Object.fromEntries(map.entries()); // ساخت ÛÚ© Ø´ÛØ¡ ساد٠(*)
// !Ø§ÙØ¬Ø§Ù
شد
// obj = { banana: 1, orange: 2, meat: 4 }
alert(obj.orange); // 2
ÙØ±Ø§Ø®ÙÙÛ map.entries() ÛÚ© ØÙÙÙâÙ¾Ø°ÛØ± از Ø¬ÙØªâÙØ§Û Ú©ÙÛØ¯/Ù
ÙØ¯Ø§Ø± برÙ
ÛâÚ¯Ø±Ø¯Ø§ÙØ¯Ø دÙÛÙØ§ در Ø´Ú©Ù Ù
ÙØ§Ø³Ø¨ Ø¨Ø±Ø§Û Object.fromEntries.
ÙÙ
ÚÙÛÙ Ù
ÛâØªÙØ§ÙÛÙ
خط (*) را Ú©ÙØªØ§ÙâØªØ± Ú©ÙÛÙ
:
let obj = Object.fromEntries(map); // را ØØ°Ù کردÛÙ
.entries()
اÛ٠د٠ÛÚ©Ø³Ø§Ù ÙØ³ØªÙد ÚÙÙ Object.fromEntries ÛÚ© Ø´ÛØ¡ ØÙÙÙâÙ¾Ø°ÛØ± را ب٠عÙÙØ§Ù آرگÙÙ
ا٠Ù
ÛâÙ¾Ø°ÛØ±Ø¯. ÙØ¨Ø§Ûد ÙØ²ÙÙ
ا ÛÚ© آراÛ٠باشد. ÛÚ© ØÙÙÙâØ²Ø¯Ù Ø§Ø³ØªØ§ÙØ¯Ø§Ø±Ø¯ در map Ø¬ÙØªâÙØ§Û Ú©ÙÛØ¯/Ù
ÙØ¯Ø§Ø± Ûکسا٠با map.entries() را برÙ
ÛâÚ¯Ø±Ø¯Ø§ÙØ¯. Ø¨ÙØ§Ø¨Ø±Ø§ÛÙ Ù
ا Ø´ÛØ¡ سادÙâØ§Û Ø¨Ø§ Ú©ÙÛØ¯/Ù
ÙØ¯Ø§Ø±ÙØ§Û Ûکسا٠با map Ø¯Ø±ÛØ§Ùت Ù
ÛâÚ©ÙÛÙ
.
ساختار Set
ÛÚ© Set Ù
جÙ
ÙØ¹ÙâØ§Û Ø®Ø§Øµ است â «دستÙâØ§Û Ø§Ø² Ù
ÙØ¯Ø§Ø±Ùا» (بدÙÙ Ú©ÙÛØ¯) Ú©Ù ÙØ± Ù
ÙØ¯Ø§Ø± تÙÙØ§ ÛÚ© بار در Ø¢Ù ÙØ§Ùع Ù
ÛâØ´ÙØ¯.
Ù ØªØ¯ÙØ§Û اصÙÛ Ø¢Ù:
new Set([iterable])â set را Ø§ÛØ¬Ø§Ø¯ Ù ÛâÚ©ÙØ¯ ٠اگر ÛÚ© Ø´ÛØ¡ ØÙÙÙâÙ¾Ø°ÛØ± Ø¯Ø§Ø¯Ù Ø´ÙØ¯ (٠ع٠ÙÙØ§ ÛÚ© آراÛÙ)Ø Ù ÙØ¯Ø§Ø±Ùا را از آ٠درÙÙ set Ú©Ù¾Û Ù ÛâÚ©ÙØ¯.set.add(value)â ÛÚ© Ù ÙØ¯Ø§Ø± اضاÙÙ Ù ÛâÚ©ÙØ¯ Ù Ø®ÙØ¯ set را بر٠ÛâÚ¯Ø±Ø¯Ø§ÙØ¯.set.delete(value)â Ù ÙØ¯Ø§Ø± را ØØ°Ù Ù ÛâÚ©ÙØ¯ ٠اگرvalueÙÙÚ¯Ø§Ù ÙØ±Ø§Ø®ÙاÙÛ ÙØ¬Ùد داشت٠باشدtrueرا بر٠ÛâÚ¯Ø±Ø¯Ø§ÙØ¯Ø در ØºÛØ± اÛÙ ØµÙØ±Øªfalse.set.has(value)â Ø§Ú¯Ø± Ù ÙØ¯Ø§Ø± در set ÙØ¬Ùد داشت٠باشدtrueرا بر٠ÛâÚ¯Ø±Ø¯Ø§ÙØ¯Ø در ØºÛØ± اÛÙ ØµÙØ±Øªfalse.set.clear()â ÙÙ Ù ÚÛØ² را از set ØØ°Ù Ù ÛâÚ©ÙØ¯.set.sizeâ Ø¨Ø±Ø§Ø¨Ø± با تعداد اÙ٠اÙâÙØ§ است.
ÙÛÚÚ¯Û Ø§ØµÙÛ Ø§Û٠اصت Ú©Ù ÙØ±Ø§Ø®ÙاÙÛâÙØ§Û Ù¾ÛâØ¯Ø±âÙ¾Û set.add(value) با Ù
ÙØ¯Ø§Ø±Û ÛÚ©Ø³Ø§ÙØ Ú©Ø§Ø±Û Ø§ÙØ¬Ø§Ù
ÙÙ
ÛâØ¯ÙØ¯. ب٠ÙÙ
Û٠دÙÛ٠است Ú©Ù ÙØ± Ù
ÙØ¯Ø§Ø± تÙÙØ§ ÛÚ© بار در Set ÙØ§Ùع Ù
ÛâØ´ÙÙØ¯.
Ø¨Ø±Ø§Û Ù Ø«Ø§ÙØ ٠ا Ø¨Ø§Ø²Ø¯ÛØ¯Ú©ÙÙØ¯Ú¯Ø§ÙÛ Ø¯Ø§Ø±ÛÙ Ù Ù ÛâØ®ÙØ§ÙÛÙ ÙÙ Ù Ø§ÙØ±Ø§Ø¯ را Ø¨Ù ÛØ§Ø¯ بسپارÛÙ . ا٠ا Ø¨Ø§Ø²Ø¯ÛØ¯ÙØ§Û ØªÚ©Ø±Ø§Ø±Û ÙØ¨Ø§Ûد ØØ³Ø§Ø¨ Ø´ÙÙØ¯. ÛÚ© Ø¨Ø§Ø²Ø¯ÛØ¯Ú©ÙÙØ¯Ù Ø¨Ø§ÛØ¯ تÙÙØ§ ÛÚ© بار Â«Ø´Ù Ø±Ø¯Ù Ø´ÙØ¯Â».
Set ساختار کاÙ
ÙØ§ Ù
ÙØ§Ø³Ø¨Û Ø¨Ø±Ø§Û Ø§Û٠کار است:
let set = new Set();
let john = { name: "John" };
let pete = { name: "Pete" };
let mary = { name: "Mary" };
// Ø¨Ø§Ø²Ø¯ÛØ¯ÙØ§Ø Ø¨Ø¹Ø¶Û Ø§Ø² کاربرا٠ÚÙØ¯Ø¨Ø§Ø± Ù
راجع٠Ù
ÛâÚ©ÙÙØ¯
set.add(john);
set.add(pete);
set.add(mary);
set.add(john);
set.add(mary);
// تÙÙØ§ Ù
ÙØ¯Ø§Ø±ÙØ§Û Ûکتا را ÙÚ¯Ù Ù
ÛâØ¯Ø§Ø±Ø¯ set
alert( set.size ); // 3
for (let user of set) {
alert(user.name); // John (Mary ٠Pete سپس)
}
جاÛگزÛÙ Set Ù
ÛâØªÙØ§Ùد آراÛÙâØ§Û Ø§Ø² Ú©Ø§Ø±Ø¨Ø±Ø§Ù Ù Ú©Ø¯Û Ø¨Ø±Ø§Û Ø¨Ø±Ø±Ø³Û ØªÚ©Ø±Ø§Ø±Û Ø¨ÙØ¯Ù کاربر در ÙØ± بار اضاÙ٠کرد٠با Ø§Ø³ØªÙØ§Ø¯Ù از arr.find باشد. اÙ
ا عÙ
Ùکرد کد Ù
Ù
ک٠است Ø¨Ø³ÛØ§Ø± بد باشد ÚÙ٠اÛÙ Ù
تد تÙ
اÙ
آراÛÙ Ù ÙØ± اÙÙ
ا٠را Ø¨Ø±Ø±Ø³Û Ù
ÛâÚ©ÙØ¯. Set Ø¨Ø±Ø§Û Ø¨Ø±Ø±Ø³Û Ûکتا Ø¨ÙØ¯Ù از درÙÙ Ø¨Ø³ÛØ§Ø± بÙÛÙÙâØªØ± است.
ØÙÙÙâØ²Ø¯Ù Ø¯Ø± Set
Ù
ا Ù
ÛâØªÙØ§ÙÛÙ
در set ÙÙ
با for..of Ù ÙÙ
با Ø§Ø³ØªÙØ§Ø¯Ù از forEach ØÙÙ٠بزÙÛÙ
:
let set = new Set(["oranges", "apples", "bananas"]);
for (let value of set) alert(value);
// :forEach کار Ù
شاب٠با Ø§Ø³ØªÙØ§Ø¯Ù از
set.forEach((value, valueAgain, set) => {
alert(value);
});
ÛÚ© ÚÛØ² Ø¬Ø§ÙØ¨ را در ÙØ¸Ø± Ø¯Ø§Ø´ØªÙ Ø¨Ø§Ø´ÛØ¯. ØªØ§Ø¨Ø¹Û Ú©Ù Ø¨Ù forEach داد٠شد٠3 آرگÙÙ
ا٠دارد: ÛÚ© valueØ Ø³Ù¾Ø³ Ù
ÙØ¯Ø§Ø± Ûکسا٠valueAgain ٠سپس Ø´ÛØ¡ Ù
ÙØ±Ø¯ ÙØ¸Ø±. در ÙØ§ÙØ¹Ø Ù
ÙØ¯Ø§Ø±Û Ûکسا٠د٠بار در آرگÙÙ
Ø§Ù Ø¸Ø§ÙØ± Ù
ÛâØ´ÙØ¯.
اÛ٠ب٠دÙÛÙ Ø³Ø§Ø²Ú¯Ø§Ø±Û Ø¨Ø§ Map است ک٠تابع داد٠شد٠ب٠forEach Ø¯Ø§Ø±Ø§Û 3 آرگÙÙ
ا٠است. ÙØ·Ø¹Ø§ Ú©Ù
Û Ø¹Ø¬ÛØ¨ Ø¨Ù ÙØ¸Ø± Ù
ÛâØ±Ø³Ø¯. اÙ
ا Ù
ÛâØªÙØ§Ùد ب٠جاÛگزÛÙÛ Map با Set ٠برعکس در Ø¨Ø¹Ø¶Û Ù
ÙØ§Ø±Ø¯ Ú©Ù
Ú© Ú©ÙØ¯.
ÙÙ
ÚÙÛÙ Ù
ØªØ¯ÙØ§Û Ù
شابÙÛ Ú©Ù Map ÙÙ
Ø¨Ø±Ø§Û ØÙÙÙâØ²ÙÙØ¯ÙâÙØ§ Ø¯Ø§Ø±Ø¯Ø Ù¾Ø´ØªÛØ¨Ø§ÙÛ Ù
ÛâØ´ÙÙØ¯:
set.keys()â ÛÚ© Ø´ÛØ¡ ØÙÙÙâÙ¾Ø°ÛØ± Ø¨Ø±Ø§Û Ù ÙØ¯Ø§Ø±Ùا را بر٠ÛâÚ¯Ø±Ø¯Ø§ÙØ¯Øset.values()â Ø¨Ø§set.keys()ÛÚ©Ø³Ø§Ù Ø§Ø³ØªØ Ø¨Ø±Ø§Û Ø³Ø§Ø²Ú¯Ø§Ø±Û Ø¨Ø§Mapset.entries()â ÛÚ© Ø´ÛØ¡ ØÙÙÙâÙ¾Ø°ÛØ± را Ø¨Ø±Ø§Û Ø§Ø·ÙØ§Ø¹Ø§Øª ب٠شکÙ[value, value]بر٠ÛâÚ¯Ø±Ø¯Ø§ÙØ¯Ø Ø¨Ø±Ø§Û Ø³Ø§Ø²Ú¯Ø§Ø±Û Ø¨Ø§MapÙØ¬Ùد دارد.
Ø®ÙØ§ØµÙ
Map â ÛÚ© Ù
جÙ
ÙØ¹Ù از Ù
ÙØ¯Ø§Ø±ÙØ§Û Ú©ÙÛØ¯Ø¯Ø§Ø± است.
Ù ØªØ¯ÙØ§ Ù ÙÛÚÚ¯ÛâÙØ§Û Ø¢Ù:
new Map([iterable])â map را Ù ÛâØ³Ø§Ø²Ø¯Ø Ø¨Ø±Ø§Û Ù ÙØ¯Ø§Ø±Ø¯ÙÛ Ø§ÙÙÛ٠ازiterable(ØÙÙÙâÙ¾Ø°ÛØ±) Ø§Ø®ØªÛØ§Ø±Û (٠اÙÙØ¯ آراÛÙ) از Ø¬ÙØªâÙØ§Û[key,value]Ù ÛâØªÙØ§Ù Ø§Ø³ØªÙØ§Ø¯Ù کرد.map.set(key, value)â Ù ÙØ¯Ø§Ø± را Ø¨Ù ÙØ§Ø³Ø·Ù Ú©ÙÛØ¯ Ø°Ø®ÛØ±Ù Ù ÛâÚ©ÙØ¯Ø Ø®ÙØ¯ map را بر٠ÛâÚ¯Ø±Ø¯Ø§ÙØ¯.map.get(key)â Ù ÙØ¯Ø§Ø± را Ø¨Ù ÙØ§Ø³Ø·Ù Ú©ÙÛØ¯ بر٠ÛâÚ¯Ø±Ø¯Ø§ÙØ¯Ø اگرkeyدر map ÙØ¬Ùد ÙØ¯Ø§Ø´ØªÙ باشدundefinedبر٠ÛâÚ¯Ø±Ø¯Ø§ÙØ¯.map.has(key)â Ø§Ú¯Ø±keyÙØ¬Ùد داشت٠باشدtrueبر٠ÛâÚ¯Ø±Ø¯Ø§ÙØ¯Ø در ØºÛØ± اÛÙ ØµÙØ±Øªfalse.map.delete(key)â Ù ÙØ¯Ø§Ø± را Ø¨Ù ÙØ§Ø³Ø·Ù Ú©ÙÛØ¯ ØØ°Ù Ù ÛâÚ©ÙØ¯Ø اگرkeyدر ÙØØ¸Ù ÙØ±Ø§Ø®ÙاÙÛ ÙØ¬Ùد داشت٠باشدtrueبر٠ÛâÚ¯Ø±Ø¯Ø§ÙØ¯Ø در ØºÛØ± اÛÙ ØµÙØ±Øªfalse.map.clear()â ÙÙ Ù ÚÛØ² را از map ØØ°Ù Ù ÛâÚ©ÙØ¯.map.sizeâ ØªØ¹Ø¯Ø§Ø¯ اÙ٠اÙâÙØ§ را بر٠ÛâÚ¯Ø±Ø¯Ø§ÙØ¯.
ØªÙØ§Ùت آ٠با Object Ù
عÙ
ÙÙÛ:
- ÙØ± Ú©ÙÛØ¯Û Ù Ù Ú©Ù Ø§Ø³ØªØ Ø´ÛØ¡Ùا ÙÙ Ù ÛâØªÙØ§ÙÙØ¯ Ú©ÙÛØ¯ Ø¨Ø§Ø´ÙØ¯.
- Ù
ØªØ¯ÙØ§Û Ø®ÙØ¨ Ø¨ÛØ´ØªØ±Ø ÙÛÚÚ¯Û
size
Set â ÛÚ© Ù
جÙ
ÙØ¹Ù از Ù
ÙØ¯Ø§Ø±ÙØ§Û Ûکتا است.
Ù ØªØ¯ÙØ§ Ù ÙÛÚÚ¯ÛâÙØ§Û Ø¢Ù:
new Set([iterable])â set را Ø§ÛØ¬Ø§Ø¯ Ù ÛâÚ©ÙØ¯Ø Ø¨Ø±Ø§Û Ù ÙØ¯Ø§Ø±Ø¯ÙÛ Ø§ÙÙÛÙ Ù ÛâØªÙØ§Ù ازiterable(ØÙÙÙâÙ¾Ø°ÛØ± ٠اÙÙØ¯ آراÛÙ) Ø´Ø§Ù Ù Ù ÙØ¯Ø§Ø±Ùا Ø§Ø³ØªÙØ§Ø¯Ù کرد.set.add(value)â ÛÚ© Ù ÙØ¯Ø§Ø± را اضاÙÙ Ù ÛâÚ©ÙØ¯ (اگرvalueÙØ¬Ùد داشت٠باشد Ú©Ø§Ø±Û ÙÙ ÛâÚ©ÙØ¯)Ø Ø®ÙØ¯ set را بر٠ÛâÚ¯Ø±Ø¯Ø§ÙØ¯.set.delete(value)â Ù ÙØ¯Ø§Ø± را ØØ°Ù Ù ÛâÚ©ÙØ¯Ø اگرvalueÙÙÚ¯Ø§Ù ÙØ±Ø§Ø®ÙاÙÛ ÙØ¬Ùد داشت٠باشدtrueرا بر٠ÛâÚ¯Ø±Ø¯Ø§ÙØ¯Ø در ØºÛØ± اÛÙ ØµÙØ±Øªfalse.set.has(value)â Ø§Ú¯Ø± Ù ÙØ¯Ø§Ø± در set ÙØ¬Ùد داشت٠باشدtrueرا بر٠ÛâÚ¯Ø±Ø¯Ø§ÙØ¯Ø در ØºÛØ± اÛÙ ØµÙØ±Øªfalse.set.clear()â ÙÙ Ù ÚÛØ² را از set ØØ°Ù Ù ÛâÚ©ÙØ¯.set.sizeâ Ø¨Ø±Ø§Ø¨Ø± با تعداد اÙ٠اÙâÙØ§ است.
ØÙÙÙâØ²Ø¯Ù Ø¯Ø± Map Ù Set ÙÙ
ÛØ´Ù با ØªØ±ØªÛØ¨ اضاÙÙâÚ©Ø±Ø¯Ù Ø§ÙØ¬Ø§Ù
Ù
ÛâØ´ÙØ¯Ø پس Ù
ا ÙÙ
ÛâØªÙØ§ÙÛÙ
بگÙÛÛÙ
اÛÙ Ù
جÙ
ÙØ¹ÙâÙØ§ ÙØ§Ù
رتب ÙØ³ØªÙد اÙ
ا ÙÙ
ÛâØªÙØ§ÙÛÙ
اÙÙ
اÙâÙØ§ را Ø¯ÙØ¨Ø§Ø±Ù Ù
رتب Ú©ÙÛÙ
ÛØ§ Ø¨Ù ØµÙØ±Øª Ù
ستÙÛÙ
ÛÚ© اÙÙ
ا٠را با Ø§Ø³ØªÙØ§Ø¯Ù از عدد Ø¢Ù Ø¯Ø±ÛØ§Ùت Ú©ÙÛÙ
.
ÙØ¸Ø±Ø§Øª
<code>Ø§Ø³ØªÙØ§Ø¯Ù Ú©ÙÛØ¯Ø Ø¨Ø±Ø§Û ÚÙØ¯Û٠خط â کد را درÙ٠تگ<pre>ÙØ±Ø§Ø± دÙÛØ¯Ø Ø¨Ø±Ø§Û Ø¨ÛØ´ از د٠خط کد â Ø§Ø² ÛÚ© جعبÙÙ Ø´ÙÛ Ø§Ø³ØªÙØ§Ø¯Ù Ú©ÙÛØ¯. (plnkrØ jsbinØ codepenâ¦)