الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

ترتيب مصفوفة تحوي على اغراض

بدأه Tammam_KD في 7 مارس 2011 · 6 رد · 475 مشاهدة · في قسم البرمجة بــ Javascript
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم شباب .......... ارجو منكم المساعدة .. قمت بتعرفيف مصفوفة وخزنت فيها مجموعة اغراض كل غرض يملك خاصيتين اسم ورقم ..........

اريد ان اعيد المصفوفة السابقة مع ترتيب العناصر بداخلها حسب الرقم

        var p = new Object();
        p.Score = Score;
        p.Name = PlayerName;
        TopPlayer.push( p );

المصفوفة التي اخزن بها الاغراض كما هو واضح في المثال هي TopPlayer

لم افلح بعملية الترتيب ارجو المساعدة

تم تعديل هذه المشاركة بواسطة Tammam_KD في 7 مارس 2011 في 01:59

قل لمن يحمل هما ****** إن همــــا لا يدوم
:rolleyes: :rolleyes: :clapping: :rolleyes: :rolleyes:

مثلا تفنى المسـرة ***** هكذا تفنى الهموم

#2

عليكم السلام

للترتيب بالمصفوفة قم بإعادة تعريف دالة مقارنة ومررها ل .sort

function compFunc(obj1, obj2){
...
}

ثم مررها للمصفوفة

arr.sort(compFunc)

تم تعديل هذه المشاركة بواسطة ahmed_youssef في 7 مارس 2011 في 07:05

1
(map share people)

فضلا لاتقم بمراسلتي من أجل أسئلة لها أقسامها في المنتدى حتى تعم الفائدة على الجميع وللحصول على إجابات أفضل من أعضاء أكثر خبرة.
Weblog
@bitbucket
@xmonader

#3

جربت الطريقة بس ماعم تزبط معي .......... لو في طريقة تانية ياريت تعطوني اياها ........ انا مو متعود عل الجافا سيكريبت

قل لمن يحمل هما ****** إن همــــا لا يدوم
:rolleyes: :rolleyes: :clapping: :rolleyes: :rolleyes:

مثلا تفنى المسـرة ***** هكذا تفنى الهموم

#4

ممكن يساعدك هذا المثال

<script type="text/javascript">

	//The custom sort method, sort by score
	function player_sort(p1, p2) {
		return p1.score - p2.score;
	}

	//Constructor for objects Player
	function Player(score, name) {
		this.score = score;
		this.name = name;
	}

	var players = new Array();
	players.push(new Player(20, 'Issam'));
	players.push(new Player(10, 'Ahmed'));
	players.push(new Player(30, 'Mohamad'));

	//Before sorting
	alert('Before sorting');
	for (var i = 0; i < players.length; i++) {
		alert(players.name + ': '+ players.score);
	}

	players.sort(player_sort);

	//After sorting
	alert('After sorting');
	for (var i = 0; i < players.length; i++) {
		alert(players.name + ': '+ players.score);
	}
</script>

وهذا رابط يشرح أكثر عمل sort

https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/sort

تم تعديل هذه المشاركة بواسطة herch في 7 مارس 2011 في 14:20

#5

للأسف نفس المشكلة اللي عم يصير هو كالتالي :

عندي تابع لإضافة اللاعبين للمصفوفة كما يلي :

var Score = "قيمة متجددة يأخذها من تابع آخر";
var Name = "قيمة ايضا متجددة يأخذها من مربع نص";
function AddPlayerToArry()
{
        var MyObj = new Object();
        var p = new Object();
        p.Score = Score;
        p.Name = PlayerName;
        TopPlayer.push( p );    
}

سأقوم الأن باستدعاء التابع AddPlayerToArry ضمن حدث ضغط على زر كما يلي :

function btnGuess_onclick()
{
          // do some code ........ 
          Socre = value1 ;
          Name = value2;
          AddPlayerToArry();

}

الآن تم ملئ المصفوفة بمجموعة من الأغراض Objectكل غرض منها له خاصيتان اسم ورقم ..... اريد استدعاء تابع يقوم بترتيب هذه الاغراض حسب خاصية الرقم الموافق لكل غرض كما يلي :

function TopPlayers_onclick()
    var str="";
    for(var z=0;z<TopPlayer.length;z++)
    {
        var MyObj = new Object();
        var NewOb = new Object();
        var tempO = new Object();
        MyObj = TopPlayer[z];
        NewOb = TopPlayer[z+1];
        if(NewOb.Score==undefined){NewOb.Score = 0}
        if(NewOb.Score > MyObj.Score)
        {
            tempO = MyObj;
            MyObj = NewOb;
            NewOb = tempO;
        }
         str+=MyObj.Score+"|| ";
    }
    alert(str);

لكن للأسف من غير فائدة .................. نفس الخطأ

علما انكم في الثال السابق قمتم بتمرير مصفوفة ثانئية البعد وليس مصفوفة اغراض كل غرض منها يحوي على خاصيتين....... لذا ارجو النظر في ذلك

تم تعديل هذه المشاركة بواسطة Tammam_KD في 7 مارس 2011 في 17:35

قل لمن يحمل هما ****** إن همــــا لا يدوم
:rolleyes: :rolleyes: :clapping: :rolleyes: :rolleyes:

مثلا تفنى المسـرة ***** هكذا تفنى الهموم

#6
>>> arr.sort(function(obj1, obj2){ return obj1.hits-obj2.hits})
[Object { tag="windows", hits=0}, Object { tag="mac", hits=5}, Object { tag="linux", hits=9999}]
(map share people)

فضلا لاتقم بمراسلتي من أجل أسئلة لها أقسامها في المنتدى حتى تعم الفائدة على الجميع وللحصول على إجابات أفضل من أعضاء أكثر خبرة.
Weblog
@bitbucket
@xmonader

#7

وأخيرا تم حل المشكلة ........................... الحمد لله .... مشكورين تعبتكم معاي بس هاد اللي بعمروا مو مشتغل جافا سيكريبت :blush: هيك بيصير فيه .... مبرمج ويب وما شغال عليها :blush:

ع كل لدي سؤال آخر عن كيفية كتابة قيم هذه المصفوفة ضمن جدول على الصفحة ولكن سأقوم بالبحث أولا

بعد البحث والسؤال وجدت انه لا يمكن اجراء عملية swap في الجافا سيكريبت .... وكان لدي مشكلة في عملية العرض

جزاكم الله الخير

تم تعديل هذه المشاركة بواسطة Tammam_KD في 7 مارس 2011 في 19:10

قل لمن يحمل هما ****** إن همــــا لا يدوم
:rolleyes: :rolleyes: :clapping: :rolleyes: :rolleyes:

مثلا تفنى المسـرة ***** هكذا تفنى الهموم

مواضيع مشابهة