JavaScript - вопрос относительно структуры данных - PullRequest
1 голос
/ 17 мая 2010

Я пытаюсь рассчитать чье-то здоровье кишечника на основе системы баллов. Я могу редактировать структуру данных или логику любым способом. Я просто пытаюсь написать функцию и структуру данных для обработки этой способности.

Функция псевдо-калькулятора:

// Bowel health calculator
var points = 0;

If age is from 30 and 34:
    points += 1
If age is from 35 and 40:
    points += 2

If daily BMs is from 1 and 3:
    points -= 1
If daily BMs is from 4 and 6:
    points -= 2

return points;

Структура псевдоданных:

var points_map = {
    age:
    {
        '35-40': 1,
        '40-45': 2,
        '45-50': 6,
        '50-55': 2,
        '55-60': 1,
        '60-65': 4,
        '65-70': 3,
        '70-75': 1,
        '75-150': 2
    },

    dbm:
    {
        '1-3': -1,
        '4-6': -2,
        '7-9': -3,
        '10-150': 5
    }

    // This plus about 10 more metrics like them (all with the same "Map a plus or minus value to each range" logic)
};

У меня есть полная электронная таблица данных, подобная этой, и я пытаюсь написать СУХУЮ версию кода и СУХУЮ версию этих данных (то есть, вероятно, не строку для «30 -34» и т. Д.) обрабатывать подобные вещи без огромного количества switch утверждений.

1 Ответ

2 голосов
/ 17 мая 2010

Я думаю, что лучшая структура может иметь что-то вроде:

{
[35,1],
[40,2],
[45,6],
...
[150, null]
},

затем выполните цикл:

for (var i =0; i<points_map.age.length-1; i++)
 {
 if (val >= points_map.age[i][0] && val<points_map.age[i+1][0])
    points += points_map.age[i][1];
 }

Это можно сделать немного более эффективным, если это необходимо, но вы поняли идею.

...