Данные из массивов и логика для их вычесления
Добрый день, нужна Ваша помощь!
Имеется два массива start & end в которых есть число(sum) и уникальный номер(id). Есть третий массив (logic) в котором находиться уникальный номер строки (id), уникальный номер из массива start и end, и логика математического вычисления (filter). Требуется пройти весь массив logic по порядку (по id), взять данные из двух массивов start & end, провести вычисление по математической формуле указанной в фильтре и показать результат.
var model = {
start: [{
id: 1,
sum: 500
},{
id: 2,
sum: 500
}],
end: [{
id: 1,
sum: 500
},{
id: 2,
sum: 500
}],
logic: [{
id: 1,
start: 1
end: 1
filter: start.sum*end.sum/5
},
{
id: 2,
start: 1
end: 2
filter: start.sum*end.sum*4
}]
}
|
Цитата:
var model = {
start: [
{
id: 1,
sum: 100
},
{
id: 2,
sum: 200
}
],
end: [
{
id: 1,
sum: 300
},
{
id: 2,
sum: 400
}
],
logic: [
{
id: 1,
start: 1,
end: 1,
filter: 'start.sum*end.sum/5'
},
{
id: 2,
start: 1,
end: 2,
filter: 'start.sum*end.sum*4'
}
]
}
var i,start={},end={},o;
for (i=0; i<model.logic.length; i++) {
o=model.logic[i];
start.sum=getSum('start',o.start);
end.sum=getSum('end',o.end);
alert(o.id+') '+start.sum+', '+end.sum+' = '+eval(o.filter));
};
function getSum(Type,Id) {
var i,o=model[Type];
for (i=0; i<o.length; i++) {
if (o[i].id==Id) {
return o[i].sum;
};
};
};
|
Спасибо за интересное решение. Возможно при таком решение производить расчет в н-логике из данных полученных в логиках. Может что-то добавить в структуру массива. Как вариант:
logic: [
{
id: 1,
start: 1,
end: 1,
filter: 'start.sum*end.sum/5'
},
{
id: 2,
start: 1,
end: 2,
filter: 'start.sum*end.sum*4'
},
{
id: 3,
start: 0,
end: 0,
filter: 'logicId(1).sum + logicId(2).sum'
}
]
|
| Часовой пояс GMT +3, время: 21:01. |