for (key in arr){
if (key == result4) {
...
}
}
это то же самое, что
if( result4 in arr ){ ... }
только лучше
---
Сообщение от Spelesto
|
x2 = (((((xxx4 - xxx2) / 2)) + xxx2) - xxx2).toFixed(3)
|
что за уличная магия?
---
по поводу поиска следующего... задавать такую таблицу, конечно, удобно в виде ассоциативного массива (в 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 прибавлял...
и добавлю, что функции помогают перенести реализацию в другую часть кода. Т.е. у тебя не будет один большой сложный кусок кода в котором все последовательно происходит, а будет много маленьких и простых - а это намного лучше
и вычисления с выводом мешать не стоит, не надо все превращать в одну большую кучу