דף הבית  >>  אינטרנט ועסקים מקוונים  >>  פיתוח אתרים הרשם | התחבר

Hashtable עבור JavaScript - מבנה נתונים יעיל לשליפה בסיבוכיות נמוכה 

מאת    [ 27/10/2005 ] [ נצפה 3869 פעמים ]
articles.co.il
Loading


לעיתים קרובות יש צורך במבנה נתונים שישמור פרמטרים שונים בצורה של מפתח-ערך (key-value).
מערך אסוציאטיבי (associative array) הוא פתרון שכזה. למרות מהירות גישה וחתימת זכרון נמוכה, איטרציה על האלמנטים ששמורים במערך בלתי אפשרית.

לאפליקציות שנכתבות לסביבת IE בלבד יש אפשרות להשתמש באובייקט המילון של מיקרוסופט (Dictionary object).
שימוש מסיבי באובייקט יכול לצור חתימת זכרון גבוהה וביצועים לא מזהירים (בלשון המעטה).

מאמר זה יציג פתרון אפשרי לבעיה, פתרון שמיושם באפליקציות הפועלות בסביבת אמת.

אובייקט Hashtable

הרעיון שעומד מאוחרי אובייקט זה הינו שימוש ביכולת מערך אסוציאטיבי ובמהירות הגישה אליו תוך הוספת יכולות נוספות. הממשק (interface) מזכיר את הממשק של אובייקטי Hash של שפת JAVA (Hashmap,Hashtable) ולא בכדי, ממשק זה נועד לתת גמישות מקסימלית באיחסון ואחזור המידע.

נתחיל בהגדרת המשתנים של המחלקה:


Hashtable.prototype.hash = null;
Hashtable.prototype.keys = null;
Hashtable.prototype.location = null;


הגדרנו שלושה משתנים:



    • hash ? מערך אסוציטיבי שישמור את המידע.

    • keys ? מערך רגיל שמחזיק את המפתחות של המערך. נשתמש בו לכשנרצה לרוץ סידרתית על רשימת הערכים שלנו.

    • location ? מצביע על הערך הנוכחי.


אחרי הגדרת המשתנים, נגדיר את הפונקציה הבונה (constructor) של המחלקה:


function Hashtable(){
this.hash = new Array();
this.keys = new Array();

this.location = 0;
}


פשוט וברור. נאתחל את שני המערכים שלנו ואת המצביע.

אחרי שסיימנו עם החלק ההגדרתי אפשר להתחיל לקודד...
שתי הפונקציות הראשונות שנכתוב הן get ו ? put. אלו הם הפונקציות הראשיות לאחסון ולאחזור הנתונים.

להלן הגדרתן:

Hashtable.prototype.get = function (key)
return this.hash[key];
}

Hashtable.prototype.put = function (key, value){
if (value == null)
return null;

if (this.hash[key] == null)
this.keys[this.keys.length] = key;

this.hash[key] = value;
}


פונקציית get פשוט מחזירה את הערך מתוך המערך לפי המפתח שסופק לה, בעוד put נדרשת לבצע מעט יותר עבודה. דבר ראשון היא בודקת אם הערך ריק (null) אזי אין טעם להמשיך והתהליך נפסק (ע"מ למחוק ערך מהמערך קיימת הפונקציה remove שמבצעת את העבודה). לאחר מכן נבדק האם המפתח כבר מוגדר. אם כן אזי יש להחליף את הערך הישן בחדש ואם לא הוגדר מפתח כזה בעבר הרי שיש ליצור אותו ולמלא אותו בערך המתאים.

סדרה נוספת של פונקציות מאפשרת לנו לרוץ בצורה סדרתית על כל הערכים ששמורים לנו.
במקום להציג את הקוד עצמו, נציג כאן איך להגדיר, להשתמש ולרוץ על רשימה שכזו:


//declare an instance
var items = new Hashtable();

//add 3 values to the hash

items.put("key1", "value1");
items.put("key2", "value2");
items.put("key3", "value3");

//just show that all works well
alert(items.get("key2"));

//start iterating the hash
//Just to be on the safe side (maybe someone has used it before?)
items.moveFirst();
while (tems.next()){ //While we have more elements
//print the key and the value
alert (items.getKey() + " = " + items.getValue());
}


למחלקה Hashtable עוד כמה פונקציות מעניינות אותן נזכיר כאן בקצרה:


    • add ? מאפשר מיזוג בין שני אובייקטים של Hashtable.

    • toString ? מחזירה מחרוזת המתארת את המפתחות ואת הערכים המתאימים להם.


    • getKeyOfValue ? מחזירה את רשימת המפתחות שמכילים ערך מסויים.
עוזי רפאלי משמש כסמנכ"ל טכנולוגיות בחברת קומט מערכות מידע המתמחה במתן פתרונות כוללים ליזמות טכנולוגית בתחום האינטרנט.

מקור המאמר: www.Articles.co.il - מאמרים לשימוש חופשי

כלים שימושיים למאמר:
 פרסם את המאמר     הדפס את המאמר     שלח לחבר 
 קישור ישיר למאמר   פניה לכותב המאמר   דווח מאמר בעייתי 

תגיות של המאמר: javascript, hashtable, hash, table, מבנה, נתונים, יעילות, מערך, array, יעיל, performance

תגובות למאמר:

  • ציטוט אקדמי של המאמר לפי כללי APA:
    רפאלי, עוזי. (27/10/2005).  Hashtable עבור JavaScript - מבנה נתונים יעיל לשליפה בסיבוכיות נמוכה. [גרסה אלקטרונית]. אתר מאמרים.
    נדלה בתאריך:10/02/12 מ:http://www.articles.co.il/article.php?id=1364

  • ציטוט אקדמי של המאמר לפי כללי MLA:
    רפאלי, עוזי. "Hashtable עבור JavaScript - מבנה נתונים יעיל לשליפה בסיבוכיות נמוכה" . [גרסה אלקטרונית]. אתר מאמרים. 27/10/2005
    נדלה בתאריך:10/02/12 מ:http://www.articles.co.il/article.php?id=1364

  •  מאמרים אחרונים בקטגוריה פיתוח אתרים
       למה חייבים להתאים אתרים לסמארטפונים?
       פיתוח אפליקציות לאייפון, משחקים או אתרים מותאמים לאייפון?
       הוספת עזרים חיצוניים לאתר בתהליך בניית אתרים
       שימוש במסמכי PDF באתרי אינטרנט
       מהו השוני בין אתר תדמית לאתר רגיל?
       כך בניית אתר לעסק תשנה את המודל העסקי שלך
       מהי חשיבות תאימות אתרים?
       בניית אתר האינטרנט שלך
       למה כל כך חשוב לפתח אתר לעסק?
       קורס PHP
       בניית אתרים בדרום - הכיצד?
       כיצד לבחור בית תוכנה לפיתוח התוכנה שלך ?
       חשיבות בניית אתר בצורה נכונה
       ניהול אתר עסק
       אתרים לציבור הדתי.


     מאמרים נצפים ביותר בקטגוריה פיתוח אתרים
       בניית אתרים לעסקים קטנים
       בניית אתרים בחינם - איפה הכי מומלץ ומה כדאי לבדוק ?
       מדריך הכיס ל - HTML
       המצאות ופטנטים- על המצאת מוצרי צריכה,יוזמות אינטרנט
       עושים עסקים און-ליין
       עולם אינטרנט - ברוכים הבאים לעולם מופלא
       בקרת איכות QA לאתר אינטרנט
       XHTML - לכתוב לפי הספר
       בניית אתר אינטרנט למשרד עורכי דין
       Hashtable עבור JavaScript - מבנה נתונים יעיל לשליפה בסיבוכיות נמוכה
       בניית אתרים חינם
       בביתנו: על מוזיאונים וירטואליים
       טעויות נפוצות בבניית אתר אינטרנט
       מערכת השיקולים בהקמת אתר אינטרנט חדש
       בחירת דומיין (שם מתחם) לאתר שלכם

    מאמרים

    ©2012 כל הזכויות שמורות

    מורנו'ס - שיווק באינטרנט

    אודותינו
    שאלות נפוצות
    יצירת קשר
    יתרונות לכותבי מאמרים
    מדיניות פרטיות
    רשימת כותבים
    כותבים מומחים
    עלינו בעיתונות
    מאמרים חדשים
    לכותבי מאמרים: פתיחת חשבון חינם
    כניסה למערכת
    יתרונות לכותבי מאמרים
    תנאי השירות
    הנחיות עריכה
    לבעלי אתרים:



    מדיה חברתית:
    חלון מאמרים לאתרך
    תנאי שימוש במאמרים
    ערוצי מאמרים ב-RSS Recent articles RSS

    מאמרים בפייסבוק מאמרים בטוויטר מאמרים ביוטיוב
    טיולים בארץ | רג'ינה - מסעדה כשרה בתל אביב | ספא בצפון | עורך דין פלילי | מדים, בגדי עבודה