Loading...
Milko123 avatar Milko123 14 Точки

04. Last K Numbers Sequence

Здравейте,

При задача https://judge.softuni.bg/Contests/Practice/Index/1797#3 с решение:

function lastKNumbersSequence(n, k) {
    let result = [1];

    for(let i=1; i<n; i++) {
         let startIndex = Math.max(0, i-k);
         let currentElement = result.slice(startIndex, startIndex + k).reduce((a, b) => a + b, 0);
         result.push(currentElement);
    }

    console.log(result.join(" "));
 }

Не разбирам това - "result.slice(startIndex, startIndex + k)". След като е създаден масив по-горе с 1 елемент (let result = [1];) и кажеm slise (0, 0+3(k)), след като масива първоначално е с 1 елемент, не трябва ли да даде грешка, предвид, че крайния индекс (startindex+k) е 3, а то няма такъв?

Тагове:
0
JavaScript Fundamentals
willystyle avatar willystyle 2472 Точки
Best Answer

не,

.slice([[, ]])

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/slice

if <var>end</var> is greater than the length of the sequence, slice extracts through to the end of the sequence (<var>arr</var>.length).

0
31/08/2020 16:08:17
Milko123 avatar Milko123 14 Точки

Благодаря! Също не разбирам и ролята на 0 в reduce ((a, b) => a + b, 0)?

1
31/08/2020 19:04:16
willystyle avatar willystyle 2472 Точки

това е начална стойност на акумулатора, в случая може и да не я сложиш (ще я приеме за undefined и при събиране с първия елемент ще я коерсне към 0, но пробвай да я промениш на "" и да видиш резултата), btw reduce e по-четливо ако го пишеш не reduce ((a, b) => a + b, 0) ами reduce ((acc, el) => acc + el, 0) понеже така всъщност разбираш параметрите на редуциращата функция как се подават

 

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.