Недавно я потратил некоторое время на то, чтобы разобраться в некоторых основных (но ключевых) элементах Javascript. И я должен признать, что не мог перестать сравнивать с Руби. Всегда полезно учиться с небольшим сравнением, поэтому эта краткая запись с акцентом на синтаксис Javascript. Вот оно тебе :)

Одно из ключевых различий, которое мне удалось уловить, заключается в том, что методы Ruby будут вызывать заданный блок для каждого элемента в массиве, в то время как Javascript применяет функцию к повторяемому элементу. Несколько примеров ниже…

Каждый…

Учитывая массив, «каждый» каким-то образом может помочь разработчикам пройти через него и обычно используется для создания совершенно нового массива для каждого элемента в массиве. Судя по синтаксису, Javascript немного «сложнее», учитывая тот факт, что Ruby спроектирован так, чтобы быть англоязычным. То же относится и к точному использованию каждого из них. Javascript позволяет использовать значения массива, его индексы и сам массив с forEach. С другой стороны, в Ruby есть 2 отдельных итератора, служащих одной и той же цели: каждый позволяет выполнять итерацию по массиву, однако, если вам понадобятся индексы - в одно и то же время - вам нужно будет использовать each_with_index. Вот пример Javascript:

[“This”,”is”,”an”,”array”,1,2,3,”£”].forEach(function(item, index, array) {
console.log(“Current item is “ + item + “ at index “ + index + “ for array “ + array);
})
//Current item is This at index 0 for array This,is,an,array,1,2,3,£
//Current item is is at index 1 for array This,is,an,array,1,2,3,£
// and so on…

Важно отметить, что Ruby позволяет отображать! который изменяет исходный массив, в то время как Javascript не предоставляет этого (если исходный массив не был намеренно изменен)

Карта…

Карта помогает нам перебирать массив, однако для всех элементов исходного массива создается совершенно новый массив, сопоставленный с некоторым другим значением. Подобно каждому из них, Javascript делает индекс доступным для использования как часть карты (при необходимости). Вот пример Javascript (на этот раз с функцией стрелки вместо традиционного синтаксиса обратного вызова):

[“This”,”is”,”an”,”array”,1,2,3,”£”].map((item,index)=>{
console.log(`${item} at index ${index}`);
})
//This at index 0
//is at index 1
// and so on…

Подобно каждому из них, Ruby также предоставляет карту! который изменяет исходный массив, в то время как Javascript не имеет аналогичного итератора.

Выбор Ruby против фильтра Javascript…

Функциональность select не сильно отличается между Javascript и Ruby. Как «обычно» Ruby позволяет изменять исходный массив (с помощью select!), А Javascript - нет. Javascript продолжает делать индекс и полный массив доступными для операции

[“This”,”is”,”an”,”array”,1,2,3,”£”].filter(function(item){
return Number.isInteger(item)
})
//[1,2,3]

Из-за структурных различий между Ruby и Javascript, когда используется итератор, Ruby возвращает исходный массив (даже если никакая операция не выполняется), а Javascript возвращает «undefined».

Дополнительная литература и ссылки

Я сделал краткое описание выше, так как мне было трудно понять ключевые различия. Важно отметить, что четкие ссылки на итераторы Ruby и Javascript находятся здесь:

Удачного обучения!