Данные из массивов и логика для их вычесления
Добрый день, нужна Ваша помощь!
Имеется два массива 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, время: 12:51. |