странные данные в array.toSource () изучают генетический алгоритм - PullRequest
1 голос
/ 02 марта 2011

Я только начинаю изучать генетические алгоритмы и по сути пишу этот урок http://lethain.com/entry/2009/jan/02/genetic-algorithms-cool-name-damn-simple/ в javascript. с несколькими изменениями, которые лучше представляют мой набор данных.

В любом случае, когда я вывожу через newPop.toSource (), я получаю

[[#1=[[30,22],#2=[30,85],#3=[30,76]...]]],[#1#,#2#,#3#...#15]]]

Я никогда не видел, чтобы мой вывод .toSource выглядел так, я ожидал просто массив с двумя массивами внутри него

Мой код

var newPop=populate(data,population,0,70);

function individual(population, min, max){
   var newIndivids=[];
   for(s in population){
      newIndivids.push(population[s]);
     newIndivids[s][0]+=rand;
   }
   return newIndivids;

}

function populate(count,population,min,max){
    var popul=[];
    for(indiv in count){
     popul.push(individual(population,min,max));
    }
    return popul;
}

Есть ли что-то, что я делаю неправильно в моем коде, который дает мне эту странную структуру массива ??

1 Ответ

1 голос
/ 02 марта 2011

Не уверен, что это за вещи #1, #2, ..., но toSource() специфичен для геккона: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function/toSource
Я предполагаю, что это какая-то "ссылка" на объект в памяти в этой точке, т.е. не переносимаяoutput.

Я предлагаю вместо этого использовать JSON.stringify, который выведет переносимое строковое представление вашей структуры данных.

Глобальный объект JSON будет доступен в Firefox / Safari / Chrome из коробки, но если он вам также нужен в IE, вы можете получить его здесь: http://www.json.org/js.html

Тогдачтобы изменить это и вернуть реальный живой объект, используйте JSON.parse:

var data = JSON.parse(str);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...