سؤال

عن طريق التعبير العادي وGreasemonkey لدي مجموعة من النتائج التي تبدو كما يلي:
choice1, choice2, choice3, choice3, choice1, etc..

سؤالي هو كيف يمكنني حساب الاختيارات حتى أعرف عدد المرات التي يكون فيها الاختيار 1 في المصفوفة، والاختيار 2 في المصفوفة، وما إلى ذلك.إذا كنت لا أعرف بالضبط عدد الخيارات الموجودة أو ما هي.

الهدف النهائي هو إنشاء برنامج نصي Greasemonkey يخزن عدد الأصوات التي يحصل عليها كل اختيار عبر صفحات متعددة (ربما باستخدام gm_setvalue على الرغم من أنني منفتح على أفكار أخرى.)

شكرًا!

هل كانت مفيدة؟

المحلول

وأسلوب واحد سيكون لتكرار عبر الخيارات وزيادة عداد المرتبطة بكل خيار فريدة من نوعها في خاصية الكائن.

مثال:

var choiceCounts = {};
for (var iLoop=0; iLoop < aChoices.length; iLoop++) {
  var keyChoice = aChoices[iLoop];
  if (!choiceCounts[keyChoice]) {
    choiceCounts[keyChoice] = 1;
  } else {
    choiceCounts[keyChoice]++;
  } //if
} //for

وثم لديك كائن مع خصائص مساو لعدد من المرات أن الخاصية موجودة في المصفوفة.

نصائح أخرى

لست متأكدًا بنسبة 100% مما تبحث عنه، ولكن أعتقد أن هذا هو ما تبحث عنه.

  // Original data
    var choices = [
        "choice 1",
        "choice 1",
        "choice 2",
        "choice 3",
        "choice 3",
        "choice 3",
        "choice 3",
        "choice 3",
        "choice 3",
        "choice 4",
        "choice 4",
        "choice 4"];


    //Create the results array
    var result = new Object();

    for (var choice in choices) {
        if (result[choices[choice]] === undefined)
            result[choices[choice]] = 1;
        else
            result[choices[choice]]++;
    }

    //Print result
    var str = "";

    for (var item in result)
        str += item + ": " + result[item] + "<br />";


    document.getElementById("resultDiv").innerHTML = str;

انتاج:

choice 1: 2
choice 2: 1
choice 3: 6
choice 4: 3

على فرز مجموعة الأولى ، أو ثم يمكنك جعل حملة واحدة لحساب الحوادث (على غرار اقتراح ريان أعلاه).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top