عد النتائج في صفيف
-
20-08-2019 - |
سؤال
عن طريق التعبير العادي و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
على فرز مجموعة الأولى م> ، أو ثم يمكنك جعل حملة واحدة لحساب الحوادث (على غرار اقتراح ريان أعلاه).