Выразительный JavaScript (Хавербеке) - страница 40

>// → упражнения: 0.0685994341

>// → выходной:   0.1371988681

>// → хлеб:      -0.0757554019

>// → пудинг:    -0.0648203724

>// и так далее...

Большинство корреляций лежат близко к нулю. Морковки, хлеб и пудинг, очевидно, не связаны с обращением в белку. Но оно вроде бы более часто происходит на выходных. Давайте отфильтруем результаты, чтобы выводить только корреляции больше 0,1 или меньше -0,1

>for (var event in correlations) {

>  var correlation = correlations[event];

>  if (correlation > 0.1 || correlation < -0.1)

>    console.log(event + ": " + correlation);

>}

>// → выходной:     0.1371988681

>// → чистил зубы: -0.3805211953

>// → конфета:      0.1296407447

>// → работа:      -0.1371988681

>// → спагетти:     0.2425356250

>// → читал:        0.1106828054

>// → арахис:       0.5902679812

Ага! У двух факторов корреляции заметно больше остальных. Арахис сильно влияет на вероятность превращения в белку, тогда как чистка зубов наоборот, препятствует этому.

Интересно. Попробуем вот что:

>for (var i = 0; i < JOURNAL.length; i++) {

>  var entry = JOURNAL[i];

>  if (hasEvent("арахис", entry) &&

>     !hasEvent("чистка зубов", entry))

>    entry.events.push("арахис зубы");

>}

>console.log(phi(tableFor("арахис зубы", JOURNAL)));

>// → 1

Ошибки быть не может! Феномен случается именно тогда, когда Жак ест арахис и не чистит зубы. Если б он только не был таким неряхой относительно оральной гигиены, он бы вообще не заметил своего несчастья.

Зная это, Жак просто перестаёт есть арахис и обнаруживает, что трансформации прекратились.

У Жака какое-то время всё хорошо. Но через несколько лет он теряет работу, и в конце концов ему приходится наняться в цирк, где он выступает как Удивительный Человек-белка, набирая полный рот арахисового масла перед шоу. Однажды, устав от столь жалкого существования, Жак не обращается обратно в человека, пробирается через дыру в цирковом тенте и исчезает в лесу. Больше его никто не видел.

Дальнейшая массивология

В конце главы хочу познакомить вас ещё с несколькими концепциями, относящимися к объектам. Начнём с полезных методов, имеющихся у массивов.

Мы видели методы >push и >pop, которые добавляют и отнимают элементы в конце массива. Соответствующие методы для начала массива называются >unshift и >shift.

>var todoList = [];

>function rememberTo(task) {

>  todoList.push(task);

>}

>function whatIsNext() {

>  return todoList.shift();

>}

>function urgentlyRememberTo(task) {

>  todoList.unshift(task);

>}

Данная программа управляет списком дел. Вы добавляете дела в конец списка, вызывая >rememberTo("поесть"), а когда вы готовы заняться чем-то, вызываете