for (key in arr){ if (key == result4) { ... } } это то же самое, что if( result4 in arr ){ ... } только лучше --- Цитата:
--- по поводу поиска следующего... задавать такую таблицу, конечно, удобно в виде ассоциативного массива (в js это будет объект). Но следующий элемент искать легче в массиве. Т.е. можно сделать так: var table = {'0.000': '0.00', '0.008': '0.01', '0.016': '0.02, ...}; var keys = getKeys(table); var values = getValues(table); var i1 = keys.indexOf(result4); // !!! рассчитываем на то, что в таблице есть такой y var x1 = values[i1]; var i2 = i1+1; var y2 = keys[i2]; var x2 = keys[i2]; function getKeys( o ){ var r = []; for( var k in o ) r.push( k ); return r; } function getValues( o ){ var r = []; for( var k in o ) r.push( o[k] ); return r; } --- но на самом деле рассчитывать на определенный порядок обхода объектов на стоит. Это я не подумал. Поэтому лучше сделать так: var table = [{'y': '0.000', 'x': '0.00'}, {'y': '0.008', 'x': '0.01'}, {'y': '0.016', 'x': '0.02}, ...]; var i1 = getIdxByY(table, result4); var y1 = table[i1]['y']; var x1 = table[i1]['x']; var y2 = table[i1+1]['y']; // !!! рассчитваем, что следующий существует var x2 = table[i1+1]['x']; function getIdxByY( a, y ){ for( var i=0; i<a.length; i++ ){ if( a[i]['y'] == y.toFixed(3) ) return i; } } --- но помимо всего этого, ты рассчитываешь на то, что твой y есть в таблице. А это только частный случай. И формулы у тебя дальше какие-то странные, но я весьма смутно представляю, что ты делаешь. Но может все же дело не только в том, что ты 0.002 прибавлял... и добавлю, что функции помогают перенести реализацию в другую часть кода. Т.е. у тебя не будет один большой сложный кусок кода в котором все последовательно происходит, а будет много маленьких и простых - а это намного лучше и вычисления с выводом мешать не стоит, не надо все превращать в одну большую кучу ;) |
Огромное спасибо за подробный разбор моего гомноКода!
СПАСИБО!! |
Часовой пояс GMT +3, время: 13:23. |