@zlFast

Как узнать где находится элемент массива?

Есть массив, допустим c 9 элементами:[1,2,3,4,5,6,7,8,9] (элементов может быть любое кол-во).
Я могу проверить есть ли цифра 5 в этом массиве или нет
[1,2,3,4,5,6,7,8,9].indexOf(5)
Но как узнать где эта 5 находится, то есть в центре массива или нет, если нет, то куда ближе, к концу или к началу, как далеко от конца массива и как далеко от начала.
  • Вопрос задан
  • 843 просмотра
Решения вопроса 3
var index = [1,2,3,4,5,6,7,8,9].indexOf(5);

Вот так :) index будет содержать позицию начиная с 0, в данном случае index будет равен 4, а далее при помощи

var length = [1,2,3,4,5,6,7,8,9].length;

узнаете длину массива, и определяет в центре, ближе к началу, или ближе к концу эта 5 находиться.
Ответ написан
Комментировать
qork
@qork
{ background: #F00B42 }
function midArr(arr, indexOf){
  var ind = arr.indexOf(indexOf);
  var qrtStep = arr.length/4;
  var qrt1 = qrtStep, 
      qrt2 = qrtStep*2, 
      qrt3 = qrtStep*3;
  if(ind == 0 || ind <= qrt1)
    return('"'+indexOf+'" находится в начале');
  else if(ind <= qrt2 || ind < qrt3)
    return('"'+indexOf+'" находится в середине');
  else
    return('"'+indexOf+'" находится в конце');
}

var array = [0,1,2,3,4,5,6,7,8,9,10,11];

alert(midArr(array, 8));

codepen.io/anon/pen/EKmxeR?editors=0011
Ответ написан
Комментировать
rim89
@rim89
программист-велосипедист
var arr = [1,2,3,4,5,6,7,8,9]; // исходный массив

(function(num){ // объявили самовызывающую функцию
	if((arr.length % num) > 0){
		console.log('Центр массива находит на элементе ' + Math.round((arr.length / 2)) ); // находим цетр, если массив нечетный
		var center = Math.round((arr.length / 2)); // запоминаем точку центра
	}else{
		console.log('Центр массива находит на элементе ' + (arr.length / 2) + ' и ' + (arr.length / 2 + 1)); // находим цетр, если массив четный
		var center = (arr.length / 2);  // запоминаем точку центра ( левую))
	}
	console.log('Элемент отстаёт от начала на ' + arr.indexOf(num) + ' элемента. И на ' + (arr.length - 1 - arr.indexOf(num)) + ' от конца');
	if(num === center){ // проверяем 'центральность'
		console.log('Бинго! число в центре');
	}else{
		console.log('Элемент отстаёт от центра :');
		(center > num)?console.log((center - num) + ' элементов слева'):console.log(-(center-num) + ' элементов справа'); // тернарный оператором определяем положение от центра
	}
})(5); // указываем число из массива, которое будем искать , в данном случаи - 5


всё в консоле, новых переменных минимум. Для массива с четным числом данных, возможно, нужно будет подпилить что то ... но мне лень %)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы