"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > जावास्क्रिप्ट में बनाम सरणी सेट करें: कब उपयोग करें?

जावास्क्रिप्ट में बनाम सरणी सेट करें: कब उपयोग करें?

2025-02-19 को पोस्ट किया गया
ब्राउज़ करें:320

Set vs Array in JavaScript: When to Use Which?

] जबकि दोनों कई मूल्यों को संग्रहीत कर सकते हैं, उनकी अनूठी विशेषताएं उन्हें विभिन्न परिदृश्यों के लिए अधिक उपयुक्त बनाती हैं। आइए देखें कि कब और क्यों एक को दूसरे पर चुना जाता है।

डिफ़ॉल्ट रूप से अद्वितीय मान

  1. सेट की सबसे प्रमुख विशेषता

    इसकी डुप्लिकेट का स्वचालित प्रसंस्करण है।

// सरणी डुप्लीकेशन की अनुमति देता है const arr = [1, 2, 2, 3, 3, 4]; कंसोल.लॉग (गिरफ्तारी); // सेट स्वचालित रूप से डुप्लिकेट हटा देता है const सेट = नया सेट ([1, 2, 2, 3, 3, 4]); कंसोल.लॉग ([... सेट]); // सरणी से डुप्लिकेट को हटाने के लिए सेट का उपयोग करें const unquearray = [... नया सेट (गिरफ्तारी)]; कंसोल.लॉग (अद्वितीय);

तत्व की जाँच प्रदर्शन
// 数组允许重复
const arr = [1, 2, 2, 3, 3, 4];
console.log(arr); // [1, 2, 2, 3, 3, 4]

// Set 自动删除重复项
const set = new Set([1, 2, 2, 3, 3, 4]);
console.log([...set]); // [1, 2, 3, 4]

// 使用 Set 从数组中删除重复项
const uniqueArray = [...new Set(arr)];
console.log(uniqueArray); // [1, 2, 3, 4]
] const largeset = नया सेट (लार्जरेरे); // सरणी खोज कंसोल.टाइम ('सरणी शामिल'); Console.log (लार्गेरेरे.इनक्लूड्स (999999)); कंसोल.टाइमेंड ('सरणी शामिल'); // सेट खोज करें कंसोल.टाइम ('सेट है'); कंसोल.लॉग (largeset.has (999999)); कंसोल.टाइमेंड ('सेट है'); // सेट स्पष्ट रूप से तेज है क्योंकि यह आंतरिक रूप से हैश टेबल का उपयोग करता है
  1. उपलब्ध तरीके और संचालन

]

const largeArray = Array.from({ length: 1000000 }, (_, i) => i);
const largeSet = new Set(largeArray);

// 数组查找
console.time('Array includes');
console.log(largeArray.includes(999999));
console.timeEnd('Array includes');

// Set 查找
console.time('Set has');
console.log(largeSet.has(999999));
console.timeEnd('Set has');

// Set 明显更快,因为它内部使用哈希表
अनुक्रम और सूचकांक पहुंच
  1. ]

// सरणी सूचकांक एक्सेस const arr = ['a', 'b', 'c']; कंसोल.लॉग (गिरफ्तारी [0]); कंसोल.लॉग (गिरफ्तारी [1]); arr [1] = 'x'; // सीधे संशोधित करें // SET में कोई इंडेक्स एक्सेस नहीं है const सेट = नया सेट (['a', 'b', 'c']); कंसोल.लॉग ([... सेट] [0]); // सूचकांक का प्रत्यक्ष संशोधन

की अनुमति नहीं है स्मृति प्रयोग

// 数组方法
const arr = [1, 2, 3, 4, 5];
arr.push(6);                    // 添加到末尾
arr.pop();                      // 从末尾移除
arr.unshift(0);                 // 添加到开头
arr.shift();                    // 从开头移除
arr.splice(2, 1, 'new');       // 替换元素
arr.slice(1, 3);               // 提取部分
arr.map(x => x * 2);           // 转换元素
arr.filter(x => x > 2);        // 过滤元素
arr.reduce((a, b) => a   b);   // 归约为单个值

// Set 方法
const set = new Set([1, 2, 3, 4, 5]);
set.add(6);                    // 添加值
set.delete(6);                 // 删除值
set.has(5);                    // 检查是否存在
set.clear();                   // 删除所有值
    // मेमोरी तुलना (किसी न किसी उदाहरण) const संख्या = array.from ({लंबाई: 1000}, (_, i) => i); // सरणी स्मृति const arr = [... संख्या]; Console.log (process.memoryusage ()। ढेर); // सेट मेमोरी const सेट = नया सेट (नंबर); Console.log (process.memoryusage ()। ढेर); // हैश तालिका संरचना के कारण, सेट आमतौर पर अधिक मेमोरी का उपयोग करता है
अक्सर उपयोग किए जाने वाले मामले

सरणी का उपयोग कब करना है:

const Playlist = ['song1.mp3', 'song2.mp3', 'song3.mp3']; const currentTrack = Playlist [currentIndex]; // 2। जब आपको सरणी विधि की आवश्यकता होती है const संख्या = [1, 2, 3, 4, 5]; const दोगुना = numbers.map (x => x * 2); const sum = numbers.reduce ((a, b) => a b, 0); // 3। जब बार -बार मान स्वीकार्य या आवश्यक होते हैं const वोट = ['हाँ', 'नहीं', 'हाँ', 'हाँ', 'हाँ', 'नहीं']; const yesvotes = वोट। फ़िल्टर (वोट => वोट === 'हां')। लंबाई;
// 数组索引访问
const arr = ['a', 'b', 'c'];
console.log(arr[0]);      // 'a'
console.log(arr[1]);      // 'b'
arr[1] = 'x';            // 直接修改

// Set 没有索引访问
const set = new Set(['a', 'b', 'c']);
console.log([...set][0]); // 需要先转换为数组
// 不允许直接修改索引
  1. // 1। जब अद्वितीय मानों पर नज़र रखी const uniquevisitors = नया सेट (); फ़ंक्शन logvisitor (userid) { Uniquevisitors.add (userid); कंसोल.लॉग (`कुल अद्वितीय आगंतुक: $ {uniquevisitors.size}`); } // 2। त्वरित खोज संचालन के लिए उपयोग किया जाता है const अनुमतियों = नया सेट (['user1', 'user22', 'user3']); फ़ंक्शन checkaccess (userid) { अनुमतियों को वापस करें। } // 3। डुप्लिकेट को हटाने के लिए उपयोग किया जाता है समारोह getuniquehashtags (पोस्ट) { const uniquetags = नया सेट (); posts.foreach (पोस्ट => { post.hashtags.foreach (tag => uniquetags.add (tag)); }); वापसी [... विशिष्टता]; }

  2. सेट और सरणी के बीच परिवर्तित
]

// सेट करने के लिए सरणी const arr = [1, 2, 2, 3, 3, 4]; const सेट = नया सेट (ARR); // सरणी के लिए सेट - तीन तरीके const back1 = [... सेट]; const back2 = array.from (सेट); const back3 = array.from (set.values ​​()); // सरणी के लिए उपयोग किया जाता है const समर्पित = [... नया सेट (arr)];

निष्कर्ष के तौर पर
// 内存比较(粗略示例)
const numbers = Array.from({ length: 1000 }, (_, i) => i);

// 数组内存
const arr = [...numbers];
console.log(process.memoryUsage().heapUsed);

// Set 内存
const set = new Set(numbers);
console.log(process.memoryUsage().heapUsed);
// 由于哈希表结构,Set 通常使用更多内存
    व्यापक सरणी विधियाँ (मानचित्र, कम, फ़िल्टर, आदि।)
  1. मूल्य दोहराएं

    स्मृति दक्षता
पारंपरिक पुनरावृत्त मॉडल

// 1. 当顺序和索引访问很重要时
const playlist = ['song1.mp3', 'song2.mp3', 'song3.mp3'];
const currentTrack = playlist[currentIndex];

// 2. 当您需要数组方法时
const numbers = [1, 2, 3, 4, 5];
const doubled = numbers.map(x => x * 2);
const sum = numbers.reduce((a, b) => a   b, 0);

// 3. 当重复值可以接受或需要时
const votes = ['yes', 'no', 'yes', 'yes', 'no'];
const yesVotes = votes.filter(vote => vote === 'yes').length;

केवल अद्वितीय मान

// 1. 当跟踪唯一值时
const uniqueVisitors = new Set();
function logVisitor(userId) {
    uniqueVisitors.add(userId);
    console.log(`Total unique visitors: ${uniqueVisitors.size}`);
}

// 2. 用于快速查找操作
const allowedUsers = new Set(['user1', 'user2', 'user3']);
function checkAccess(userId) {
    return allowedUsers.has(userId);
}

// 3. 用于删除重复项
function getUniqueHashtags(posts) {
    const uniqueTags = new Set();
    posts.forEach(post => {
        post.hashtags.forEach(tag => uniqueTags.add(tag));
    });
    return [...uniqueTags];
}

अद्वितीय वस्तुओं की सूची रखें

त्वरित समर्पण ]

नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3