Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 19.12.2010, 01:49
Новичок на форуме
Отправить личное сообщение для sdiemen Посмотреть профиль Найти все сообщения от sdiemen
 
Регистрация: 19.12.2010
Сообщений: 2

Почему массив растет?
<html>
	<head>
        <script language="javascript">

function randomArray(){
	var a=new Array(0,1,2,3,4,5,6,7,8,9);
	for(i=0;i<a.length;i++){
		var indexA=Math.floor(Math.random()*(a.length+1));
		var indexB=Math.floor(Math.random()*(a.length+1));
		var bufA=a[indexA];
		var bufB=a[indexB];
		a[indexA]=bufB;
		a[indexB]=bufA;
	}
	alert(a+"="+a.length);
	/*a.shuffle();
	alert(a);*/
}

/*Array.prototype.shuffle = function( b ){
	var i = this.length, j, t;
	while( i ){
		j = Math.floor( ( i-- ) * Math.random() );
		t = b && typeof this[i].shuffle!=='undefined' ? this[i].shuffle() : this[i];
		this[i] = this[j];
		this[j] = t;
	}
	return this;
	};
*/

</script>
	</head>
	<body onload="randomArray()">
	</body>
</html>

Задача заключается в перемешивании массива.
Почему в массиве появляются элементы со значениями undefined? Почему массив увеличивается в размерах?Где найти информацию по этой теме?

Последний раз редактировалось sdiemen, 19.12.2010 в 01:52.
Ответить с цитированием
  #2 (permalink)  
Старый 19.12.2010, 05:08
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

var a=new Array(0,1,2,3,4,5,6,7,8,9);
  var indexA=Math.floor(0.9999*(a.length+1));
alert(indexA);
alert(a[indexA]);
alert(a[indexA-1]);
Ответить с цитированием
  #3 (permalink)  
Старый 19.12.2010, 05:18
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

http://javascript.ru/ecma/part15#a-15.8.2.14
Ответить с цитированием
  #4 (permalink)  
Старый 19.12.2010, 08:16
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от sdiemen
a.length+1
Вот из-за этого числа.

http://alljs.ru/articles/array/sort.html#shuffle
Ответить с цитированием
  #5 (permalink)  
Старый 19.12.2010, 12:16
Новичок на форуме
Отправить личное сообщение для sdiemen Посмотреть профиль Найти все сообщения от sdiemen
 
Регистрация: 19.12.2010
Сообщений: 2

Девять часов сна и все тайное становится явным. Вчера неоднократно, во время отладки, наталкивался на то что запись происходит в элемент находящийся за диапазоном объявленного массива но так и не смог осознать это. Очередной раз убеждаюсь в необходимости соблюдения режима труда и отдыха. Спасибо Gvozd,x-yuri,Kolyaj, за предоставление исчерпывающего ответа.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Массив объектов или объект объектов vladlen Общие вопросы Javascript 19 30.10.2010 03:10
Как создать многомерный массив FRIE Общие вопросы Javascript 29 02.06.2010 19:14
Подскажите, как вернуть js-скрипт массив Polkan AJAX и COMET 18 30.04.2010 23:30
Как лучше сделать глобальный массив skyfish AJAX и COMET 4 17.02.2009 18:05
ассоциативный массив где ключ это год или ..... Sandr Общие вопросы Javascript 8 18.07.2008 15:39