Ближайший элемент.Как можно сделать проще ?
Всем Привет!
Нарисовал метод который принимает два параметра arrayToEnter - не пустой массив целых чисел от -10000 до 10000 и valueToCheck {Number} число . И должен возвращать ближайшее значение из массива arrayToEnter к valueToCheck. все работает,но моя имплементация далека от красоты:help: не подскажите как можно сделать проще?? function nearestElement(arrayToEnter, valueToCheck){ var arrA = arrayToEnter.split(","); for(var i in arrA){ arrA[i] = parseInt(arrA[i],10); } var lengArr = arrS.length; var ans; var minN = -10000; var maxN = 10000; var tmp = Infinity; var res = document.getElementById("func_r"); for(var i=0; i<=lengArr-1; i++){ if((minN<=arrA[i])&&(arrA[i]<=maxN)){ var m = Math.abs(valueToCheck - arrA[i]); if(m<tmp){ tmp = m; ans = arrA[i]; } }else{ return res.innerHTML = "ERROR"; } } return res.innerHTML = ans; } форма : <body> <form action="" name="form"> <input type="text" id="arrayToEnter" placeholder="Enter array in the format: 1,2,3,4 ..." style="width:230px"> <input type="number" id="valueToCheck" placeholder="Enter number"> <input type="button" value="OK" onclick="closestElement(document.getElementById('arrayToEnter').value, document.getElementById('valueToCheck').value)"> </form> <div id="func_r"></div> <script src="js/index.js"></script> </body> |
weirdjava,
Массив: перебирающие методы |
weirdjava,
И убрать ошибки |
Dilettante_Pro,
о каких ошибках идет речь? не заметил |
Цитата:
Цитата:
function nearestElement(arrayToEnter, valueToCheck){ var arrA = arrayToEnter.split(","); var lengArr = arrS.length; var ans; var minN = -10000; var maxN = 10000; var tmp = Infinity; var res = document.getElementById("func_r"); for(var i=0; i < lengArr; i++){ arrA[i] = parseInt(arrA[i],10); if((minN<=arrA[i])&&(arrA[i]<=maxN)){ var m = Math.abs(valueToCheck - arrA[i]); if(m<tmp){ tmp = m; ans = arrA[i]; } }else{ return res.innerHTML = "ERROR"; } } return res.innerHTML = ans; } |
Цитата:
|
Dilettante_Pro,
рони, понял,спасибо большое |
поиск ближайшего элемента в массиве
weirdjava,
один из возможных вариантов, ошибка если совсем нет в прелагаемой строке чисел или числа вне диапазона. элементы не сортируются!!! <!DOCTYPE html> <html> <head> <title>Untitled</title> <meta charset="utf-8"> <style type="text/css"> </style> </head> <body> <div id="func_r"></div> <script> function nearestElement(arrayToEnter, valueToCheck) { var minN = -10000; var maxN = 10000; var arrA = arrayToEnter.split(","); var ans = arrA.reduce(function(num, el) { el = parseInt(el, 10); if (!isNaN(el) && el >= minN && el <= maxN) { if (num == "ERROR") { num = el; } else { var m = Math.abs(valueToCheck - el); var n = Math.abs(valueToCheck - num); if (m < n) { num = el; } } } return num; }, "ERROR"); return ans; }; var res = document.getElementById("func_r"); res.innerHTML = nearestElement("1,2,3,4,5", "3.9") </script> </body> </html> |
рони,
Dilettante_Pro, Спасибо!Очень помогли! |
Часовой пояс GMT +3, время: 02:15. |