Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 22.03.2019, 18:57
Новичок на форуме
Отправить личное сообщение для MarkSM Посмотреть профиль Найти все сообщения от MarkSM
 
Регистрация: 22.03.2019
Сообщений: 5

Зачем в данном случае нужен метод Math.floor, если убрав его ничего не меняется. Буду благодарен за ответ , для моего понимания...


function reverseArrayInPlace(array) {
for (var i = 0; i < Math.floor(array.length - 1 - i); i++) {
let old = array[i];
array[i] = array[array.length - 1 - i];
array[array.length - 1 - i] = old;
}
return array;
}




let arrayValue = [1, 2, 3, 4, 5, 6];
reverseArrayInPlace(arrayValue);
console.log(arrayValue);
// → [6, 5, 4, 3, 2, 1]
Ответить с цитированием
  #12 (permalink)  
Старый 22.03.2019, 19:02
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

В данном случае Math.floor не нужен

function reverse(array) {
	var j = array.length - 1;
	for (var i = 0; i < j; i++, j--) {
		[array[i], array[j]] = [array[j], array[i]];
	}
	return array;
}
Ответить с цитированием
  #13 (permalink)  
Старый 25.03.2019, 09:18
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

Сообщение от Nexus
Без генератора скрипт будет пытаться создать массив бесконечной длины, с генератором будет суммировать числа до бесконечности.
Nexus, пробовать надо хотя бы, уверенность без экспериментов пустые слова и буквы и слова...
Ответить с цитированием
  #14 (permalink)  
Старый 25.03.2019, 09:30
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,729

Сообщение от Malleys
Nexus, пробовать надо хотя бы, уверенность без экспериментов пустые слова и буквы и слова...
Попробовал, разницы с тем, что я написал не увидел.

//Attention: infinity loop
function* range(start, end) {
	for (let i = start; i <= end; i++)
		yield i;
}

function sum(array) {
	let total = 0;
	for(const value of array)
		total += value;

	return total;
}

sum(range(0, Infinity));
Ответить с цитированием
  #15 (permalink)  
Старый 25.03.2019, 09:48
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

ОК, я такого, что вы тут написали даже и не запускал! В №9 чуть другой пример!

Вычисление range(1, Infinity) |> take.bind(null, 5) |> sum |> alert без итератора (Осторожность! Бесконечный цикл!)
function range(start, end) {
	let array = []; 
	for (var i = start; i <= end; i++)
		array.push(i);

	return array;
} 

function sum(array) {
	let total = 0;
	for(const value of array)
		total += value;

	return total;
}

function* take(n, xs) {
	for(const x of xs) {
		if(n-- <= 0)
			break;

		yield x;
	}
}

alert(sum(take(5, range(1, Infinity))));


Вычисление range(1, Infinity) |> take.bind(null, 5) |> sum |> alert с итератором (Запускайте смело!)
function* range(start, end) {
	for (let i = start; i <= end; i++)
		yield i;
}

function sum(array) {
	let total = 0;
	for(const value of array)
		total += value;

	return total;
}

function* take(n, xs) {
	for(const x of xs) {
		if(n-- <= 0)
			break;

		yield x;
	}
}

alert(sum(take(5, range(1, Infinity))));
Ответить с цитированием
  #16 (permalink)  
Старый 25.03.2019, 09:52
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,729

Сообщение от Malleys
В №9 чуть другой пример!
Я не про этот пример, с ним-то все понятно)
Меня изначально интересовало почему вы в коде из поста №7 использовали генератор, причина этого. Может я чего-то не знаю.
Видимо причины особой использовать генератор не было.
Не буду вас больше мучить вопросами, спасибо.
Ответить с цитированием
  #17 (permalink)  
Старый 25.03.2019, 11:07
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

Сообщение от Nexus
Меня изначально интересовало почему вы в коде из поста №7 использовали генератор, причина этого.
Так я же ответил в посте №9. Первые два предложения отвечают на ваш вопрос, вы видимо не поняли что это значит, поэтому сначала откройте Chrome DevTools (⌥⌘I), затем запустите примеры в этом посте и посмотрите, как они выполняются по шагам, для этого в панели Sources нажимайте последовательно на Step into next function call , чтобы последовательно пройти через выполнение кода.

Вычисление range(1, Infinity) |> sum |> alert без итератора
function range(start, end) {
	let array = []; 
	for (var i = start; i <= end; i++)
		array.push(i);

	return array;
} 

function sum(array) {
	let total = 0;
	for(const value of array)
		total += value;

	return total;
}

debugger;
alert(sum(range(1, 5)));


Вычисление range(1, Infinity) |> sum |> alert с итератором
function* range(start, end) {
	for (let i = start; i <= end; i++)
		yield i;
}

function sum(array) {
	let total = 0;
	for(const value of array)
		total += value;

	return total;
}

debugger;
alert(sum(range(1, 5)));
Ответить с цитированием
  #18 (permalink)  
Старый 25.03.2019, 11:21
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,072

Сообщение от Malleys
сначала откройте Chrome DevTools (⌥⌘I), затем запустите примеры в этом посте и посмотрите, как они выполняются по шагам, для этого в панели Sources нажимайте последовательно на Step into next function call
Ответить с цитированием
  #19 (permalink)  
Старый 25.03.2019, 11:29
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,729

Сообщение от Malleys
Так я же ответил в посте №9. Первые два предложения отвечают на ваш вопрос, вы видимо не поняли что это значит
Все там понятно.
Непонятно, чем хуже вариант, в котором сначала создается массив значений, а после его значения суммируются.
Ответить с цитированием
  #20 (permalink)  
Старый 25.03.2019, 11:34
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

Сообщение от Nexus
Непонятно, чем хуже вариант, в котором сначала создается массив значений, а после его значения суммируются.
Я нигде не говорил, что он хуже. В общем и целом сложность предложенного алгоритма была O(2n), я предложил вариант с O(n). Это не так критично, если вы только не будете суммировать миллионы чисел.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Количество вопросов в тесте Alexmor Общие вопросы Javascript 1 09.12.2016 08:42
Рандомный порядок вопросов PinokPodZad Элементы интерфейса 12 16.11.2015 13:16
Необходимо оценить качество вопросов в тесте на знание Java8 testd Ваши сайты и скрипты 0 10.04.2015 18:31
Несколько вопросов новичка FanAizu Общие вопросы Javascript 2 30.10.2011 12:37
Несколько вопросов про jquery от новичка Delfi jQuery 3 24.11.2010 10:55