Разлика между вградения метод Slice в JavaScript и Ruby

Метод за среза - JavaScript v / s Ruby

Кодирането е свързано с практика, търпение и отдаденост. Повече правиш, повече искаш да правиш. JS винаги ме е изумявал и привличал. За мен това има магия. За да бъдете майстор на това, започнахте да решавате ката на ежедневието на Codewars.com.

Вчера, докато решавах ката Най-голямото петцифрено число в серия, използвах вграден отрязък от метода на JS. Аз също използвах същия вграден метод в Ruby, за да реша същата ката. Днес ще обсъдим малка, но рязка разлика между резултата от метода на разрез между Ruby и JavaScript.

За примерната цел просто ще използваме една и съща ката на кодуери. Тук трябва да намерим най-голямата последователност от 5 цифри. Първо ще видим какво ни дава JavaScript фрагмент, когато итератираме по низ.

функционално решение (цифри) {
 var най-голям = 0;
 вар сега = 0;
 
 за (нека i = 0; i 
 връщане най-голям
}

Тук, за тази публикация в блога, ще обърнем внимание на сегашния ред = digits.slice (i, (i + 5)). Ако излезете от стойността на променливата сега в този момент за низ "12345678909125", ще видите тези редове в конзолата.

Стойността на променливата сега е 12345, когато стойността на i е 1
Стойността на променливата сега е 23456, когато стойността на i е 2
Стойността на променливата сега е 34567, когато стойността на i е 3
Стойността на променливата сега е 45678, когато стойността на i е 4
Стойността на променливата сега е 56789, когато стойността на i е 5
Стойността на променливата сега е 67890, когато стойността на i е 6
Стойността на променливата сега е 78909, когато стойността на i е 7
Стойността на променливата сега е 89091, когато стойността на i е 8
Стойността на променливата сега е 90912, когато стойността на i е 9
Стойността на променливата сега е 09125, когато стойността на i е 0

Итерацията ще спре след 0, защото го помолихме да продължи, докато i е по-малко от digits.length - 4. Нуждаем се от най-голямо 5-цифрено число, така че няма смисъл да го оставяме да повтаря през последните 4 цифри. Както и да е, тук точка, която се опитвам да направя, е в реда, когато кажете digits.slice (i, (i + 5)), тя ще нарязва цифри от i до (i +5). Така че, ако аз съм в индекс 2, той ще отреже 5 цифри от индекс 2 до 7.

Сега ще разгледаме Руби.

Ще се опитаме да решим същите ката в Ruby, използвайки ruby ​​while loop.

решение решение (цифри)
 @ най-голям = 0;
 @ = 0;
 @length = digits.length - 4;
докато @i <@length направи
  @current_array = []
  @now = digits.slice (@i, (@i + 5))
   поставя "Стойността на променливата сега е # {@ сега}, когато стойността на @i е # {цифри [@i]}"
  @ Current_array.push (@ now.to_i)
  @ Current_array.push (@largest)
  @i + = 1
  @largest = @ current_array.max
 край
 @largest
край

Ако се опитате да поставите стойността на @now и @i за всички итерации, ще видите тези редове:

Стойността на променливата сега е 12345, когато стойността на @i е 1
Стойността на променливата сега е 234567, когато стойността на @i е 2
Стойността на променливата сега е 3456789, когато стойността на @i е 3
Стойността на променливата сега е 45678909, когато стойността на @i е 4
Стойността на променливата сега е 567890912, когато стойността на @i е 5
Стойността на променливата сега е 678909125, когато стойността на @i е 6
Стойността на променливата сега е 78909125, когато стойността на @i е 7
Стойността на променливата сега е 8909125, когато стойността на @i е 8
Стойността на променливата сега е 909125, когато стойността на @i е 9
Стойността на променливата сега е 09125, когато стойността на @i е 0

И тук отново спряхме итерацията преди последните 4 цифри, тъй като имаме нужда от максимум 5-цифрено число. Но тук трябва да отбележим стойността на @now, ще започне с индекса, на който сочи @i. Но няма да се спре на индекса, където (@i +5) ще сочи. Тук той ще среже толкова числа, до които ще доведе вторият параметър (@i +5).

Това означава, че ако @i = 2, (@i + 5) ще бъде 7. Значи, @now ще има общо 7 числа, започващи от индекс 2. Което ще направи стойността на @now = 3456789.

Няма да ни даде желаното петцифрено число. За да направим историята кратка, във втория параметър, ако напишем само 5 вместо (@i + 5), той ще даде както трябва. Slice точно ще среже 5 числа от индекса @i ще сочи към.

Резюме:

Основната разлика между метода на среза на JavaScript е как ще срежете стойност. В JavaScript вторият параметър в метода на среза е номер на индекса, на който трябва да се реже. Докато е в Ruby, вторият параметър е няколко цифри, които трябва да нарязва, като се започне от i сочи към.

Разликата е наистина малка, но достатъчно значителна, за да промени изцяло продукцията.

Всяко предложение или въпрос, моля не се колебайте да ми пишете на hima.chhag@gmail.com или в секцията за коментари по-долу.

Честито кодиране!