Javascript задача. Нахождение крайних отрицательных элементов, сортировка.

Задача.*
Дан массив случайных чисел в диапазоне от -20 до +20. Необходимо найти позиции крайних отрицательных элементов (самого левого отрицательного элемента и самого правого отрицательного элемента) и отсортировать элементы, находящиеся между ними.

Код javascript:
var arr = [1,2,-3,4,5,18,-20,2,5,-7,4,3,-1,8];

function func(arr) {
	var arr_ni = []; // массив индексов отрицательных элементов 
	/* проходимся по исходному массиву и сохраняем индексы
	   всех отрицательных элементов в отдельный массив*/
	for(i = 0; i < arr.length; i++) {
		if (arr[i] < 0) {
			arr_ni.push(i);
		}
	}
	if (arr_ni.length == 0) {
		return 'Массив не содержит отрицательных элементов';
	}
	if (arr_ni.length == 1) {
		return 'Массив содержит один отрицательный элемент';
	}
	// индекс самого левого отрицательного элемента
	var left_i = parseInt(arr_ni.slice(0,1));
	// индекс самого правого отрицательного элемента
	var right_i = parseInt(arr_ni.slice(-1));
	// массив элементов, которые находятся между крайними отрицательными эл-ми
	var sort_arr = arr.slice(left_i+1, right_i);
	// сортировка 
	sort_arr.sort(function(a,b){return a-b;});
	// заменяем в исходном массиве неотсортированные элементы отсортированными
	arr.splice(left_i+1, sort_arr.length, sort_arr);
	return arr;
}
document.write(arr);
document.write("<br>");
document.write(func(arr));

Результат:
1,2,-3,4,5,18,-20,2,5,-7,4,3,-1,8
1,2,-3,-20,-7,2,3,4,4,5,5,18,-1,8
Теги:
элементов, return, length, массив, самого, отрицательного, write, document, slice, между, содержит, индекс, элемента , parseInt, function, right, правого, элементы, Массив, элемента, левого, сортировка, находятся, заменяем, исходном, массиве, отсортированными , элемент, splice, Javascript, проходимся, индексы , сохраняем, массиву, исходному
Добавлено: 12 Июля 2018 20:29:50 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...