Ближайший элемент.Как можно сделать проще ?
Всем Привет!
Нарисовал метод который принимает два параметра 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, время: 20:22. |