Марейн Хавербеке - Выразительный JavaScript

Тут можно читать онлайн Марейн Хавербеке - Выразительный JavaScript - бесплатно полную версию книги (целиком) без сокращений. Жанр: comp-programming. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.

Марейн Хавербеке - Выразительный JavaScript краткое содержание

Выразительный JavaScript - описание и краткое содержание, автор Марейн Хавербеке, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

В процессе чтения вы познакомитесь с основами программирования и, в частности, языка JavaScript, а также выполните несколько небольших проектов. Один из самых интересных проектов — создание своего языка программирования.

Выразительный JavaScript - читать онлайн бесплатно полную версию (весь текст целиком)

Выразительный JavaScript - читать книгу онлайн бесплатно, автор Марейн Хавербеке
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

for (var event in map)

console.log("Корреляция для '" + event

"' получается " + map[event]);

// → Корреляция для 'пицца' получается 0.069

// → Корреляция для 'тронул дерево' получается -0.081

Итоговый анализ

Чтобы найти все типы событий, представленных в наборе данных, мы обрабатываем каждое вхождение по очереди, и затем создаём цикл по всем событиям вхождения. Мы храним объект phis, в котором содержатся корреляционные коэффициенты для всех типов событий, которые мы уже нашли. Если мы встречаем новый тип, которого ещё не было в phis, мы подсчитываем его корреляцию и добавляем её в объект.

function gatherCorrelations(journal) {

var phis = {};

for (var entry = 0; entry < journal.length; entry++) {

var events = journal[entry].events;

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

var event = events[i];

if (!(event in phis))

phis[event] = phi(tableFor(event, journal));

}

}

return phis;

}

var correlations = gatherCorrelations(JOURNAL);

console.log(correlations.пицца);

// → 0.068599434

Смотрим, что получилось:

for (var event in correlations)

console.log(event + ": " + correlations[event]);

// → морковка: 0.0140970969

// → упражнения: 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("поесть"), а когда вы готовы заняться чем-то, вызываете whatIsNext(), чтобы получить (и удалить) первый элемент списка. Функция urgentlyRememberToтоже добавляет задачу, но только в начало списка.

У метода indexOfесть родственник по имени lastIndexOf, который начинает поиск элемента в массиве с конца:

console.log([1, 2, 3, 2, 1].indexOf(2));

// → 1

console.log([1, 2, 3, 2, 1].lastIndexOf(2));

// → 3

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

Ещё один важный метод – slice, который принимает номера начального (start) и конечного (end) элементов, и возвращает массив, состоящий только из элементов, попадающих в этот промежуток. Включая тот, что находится по индексу start, но исключая тот, что по индексу end.

console.log([0, 1, 2, 3, 4].slice(2, 4));

// → [2, 3]

console.log([0, 1, 2, 3, 4].slice(2));

// → [2, 3, 4]

Когда индекс end не задан, sliceвыбирает все элементы после индекса start. У строк есть схожий метод, который работает так же.

Метод concatиспользуется для склейки массивов, примерно как оператор +склеивает строки. В примере показаны методы concatи sliceв деле. Функция принимает массив arrayи индекс index, и возвращает новый массив, который является копией предыдущего, за исключением удалённого элемента, находившегося по индексу index.

function remove(array, index) {

return array.slice(0, index).concat(array.slice(index + 1));

}

console.log(remove(["a", "b", "c", "d", "e"], 2));

// → ["a", "b", "d", "e"]

Строки и их свойства

Мы можем получать значения свойств строк, например lengthи toUpperCase. Но попытка добавить новое свойство ни к чему не приведёт:

var myString = "Шарик";

myString.myProperty = "значение";

console.log(myString.myProperty);

// → undefined

Величины типа строка, число и булевские – не объекты, и хотя язык не жалуется на попытки назначить им новые свойства, он на самом деле их не сохраняет. Величины неизменяемы.

Но у них есть свои встроенные свойства. У каждой строки есть набор методов. Самые полезные, пожалуй – sliceи indexOf, напоминающие те же методы у массивов.

console.log("кокосы".slice(3, 6));

// → осы

console.log("кокос".indexOf("с"));

// → 4

Разница в том, что у строки метод indexOfможет принять строку, содержащую больше одного символа, а у массивов такой метод работает только с одним элементом.

console.log("раз два три".indexOf("ва"));

// → 5

Метод trimудаляет пробелы (а также переводы строк, табуляцию и прочие подобные символы) с обоих концов строки.

console.log(" ладно \n ".trim());

// → ладно

Мы уже сталкивались со свойством строки length. Доступ к отдельным символам строчки можно получить через метод charAt, а также просто через нумерацию позиций, как в массиве:

var string = "abc";

console.log(string.length);

// → 3

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Марейн Хавербеке читать все книги автора по порядку

Марейн Хавербеке - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




Выразительный JavaScript отзывы


Отзывы читателей о книге Выразительный JavaScript, автор: Марейн Хавербеке. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x