Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Несколько вопросов начинающего (https://javascript.ru/forum/misc/13994-neskolko-voprosov-nachinayushhego.html)

vitaver 23.12.2010 14:01

Несколько вопросов начинающего
 
Ребят помогите с вопросами!
Мне интересен вопрос с массивами. Как мне сделать чтобы из массива выводилось произвольное значение? Скажем в нем 200 строк и надо чтобы произвольно каждый раз при запросе выводилось разное значение.
Возможно ли в цикле использовать еще один цикл, и если да то каким образом?
Также интересно работа с текстовыми файлами. Скажем наполнения массива из txt или csv, или наоборот запись в текстовый файл.
И я часто в примерах кода встречаю такое вот - ret_code а что это значит нигде не могу найти.
Заранее Вам спасибо!

ksa 23.12.2010 15:41

Цитата:

Сообщение от vitaver
Как мне сделать чтобы из массива выводилось произвольное значение?

Генерить индекс в ределах о 0 до длины массива -1, потом выводить элемент с этим индексом...
http://javascript.ru/Math.random

Цитата:

Сообщение от vitaver
Также интересно работа с текстовыми файлами.

С файлами работать - прерогатива сервеного языка, не клиентского...

vitaver 23.12.2010 18:41

Вот на страницах сети нашел код, А как он работает не понимаю, объясните. В общем должен перемешивать массив:
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;
};

exec 23.12.2010 19:10

В этом коде элемент со случайным индексом обменивается с i-тым элементом (i меняется от this.length до 0 в цикле) по такой схеме:

C = A;
A = B;
B = C;
/*
C — промежуточная переменная
Если бы просто написали A = B, B = A, то ничего бы не вышло, подумайте почему
*/


Если текущий элемент массива — тоже массив, то для него shuffle() вызывается рекурсивно (есс-но, перемешивая и его), если в первом аргументе вызова ф-ции указано true.

Т.е.:

[1,2].shuffle(); // перемешает только сам массив
[ [1,2,3], [3,4] ].shuffle(true); // перемешает все подмассивы

B@rmaley.e><e 23.12.2010 19:28

Цитата:

Сообщение от vitaver
Также интересно работа с текстовыми файлами. Скажем наполнения массива из txt или csv, или наоборот запись в текстовый файл.

Получаете файл XHR запросом (см. AJAX) и делаете с его содержимым то, что хочется.

vitaver 23.12.2010 19:53

Я правильно понимаю это код:
var A = ["1", "2", "3", "4"];
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;
};

var u = Array.prototype.shuffle(A);
prompt ('Массив', u );

Выдает пустой экран.
И если массив перемешивает array.shuffle(), то зачем использовать такой алгоритм?
И еще выдает ошибку если я вместо Array в Array.prototype.shuffle прописываю myArray.

exec 23.12.2010 19:59

Вы не понимаете, зачем эту функцию добавляют в прототип и как её вызывать, советую начать с основ, иначе так и ничего не поймёте.

A.shuffle();

vitaver 23.12.2010 20:18

Вот здесь показано как вызывать и описано зачем нужен прототип, прочитав начинаю понимать.
http://javascript.ru/Object/prototype
А таким образом я ко всем массивам добавляю данный метод?

vitaver 23.12.2010 20:22

И почему без добавления этого метода функция shuffle все ровно перемешивает?


Часовой пояс GMT +3, время: 08:39.