Loading...

Във форума е въведено ограничение, което позволява на потребителите единствено да разглеждат публикуваните въпроси.

Tzigoriyn avatar Tzigoriyn 44 Точки

08. Array Manipulator Fundamentals JS юни 2020 - Arrays Adveced

Докарй 72/100, с маймунски методи, явно толкова ми стига акъла ;):

https://pastebin.com/ybRsQhBF

Дава ми грешки - 3, 7, 11 в тестовете.

Моля, ако някой би мъгъл да отдели нужното време да да го провери. Вкарах дори и проверки които не повлияха на крайния резултат. Тествах с - Празен масив, с 0-ли, отрицателни индекси и какво ли не, на изпита не мисля че бих имал това времер отне ми околи 3часа.

Благодаря предварително.

Тагове:
0
JavaScript Fundamentals
krasizorbov avatar krasizorbov 548 Точки

Много си усложнил всичко. Истината е че ако започна да го преправям в крайна сметка ще стигна до моето решение което съм гледал да е просто и ясно. Разгледай този код, понякога човек се учи и по този начин. Ако искаш бих могъл да рефакторирам твоя ама адски е завъртян. Трябва да се стремиш да пишеш по кратък код и по четим това е то. Но всичко това идва явно с много решаване на задачи и с опит.

function arrayManipulator(array = [], commands = []) {
  let result = array.slice(0);
  let output = [];
  for (let i = 0; i < commands.length; i++) {
    let command = commands[i].split(" ");
    if (command[0] === "add") {
      let index = +command[1];
      let element = +command[2];
      result.splice(index, 0, element);
    }
    if (command[0] === "addMany") {
      let index = command[1];
      let newArray = command.slice(2).map(Number);
      result.splice(index, 0, ...newArray);
    }
    if (command[0] === "contains") {
      let element = +command[1];
      let index = result.indexOf(element);
      console.log(index);
    }
    if (command[0] === "remove") {
      let index = +command[1];
      result.splice(index, 1);
    }
    if (command[0] === "shift") {
      let rotations = +command[1];
      for (let j = 0; j < rotations; j++) {
        let element = result.shift();
        result.push(element);
      }
    }
    if (command[0] === "sumPairs") {
      if (result.length % 2 === 0) {
        for (let k = 0; k < result.length; k += 2) {
          output.push(result[k] + result[k + 1]);
        }
      } else {
        for (let k = 0; k < result.length - 1; k += 2) {
          output.push(result[k] + result[k + 1]);
        }
        output.push(result.pop());
      }
      result = output;
      output = [];
    }
    if (command[0] === "print") {
      console.log("[ " + result.join(", ") + " ]");
    }
  }
}
arrayManipulator([2, 2, 4, 2, 4], ["add 1 4", "sumPairs", "print"]);

0
Tzigoriyn avatar Tzigoriyn 44 Точки

Благодаря много,

най - вероятно някой преподавател би могъл да види кави точно са тези грешни тестове и да даде насоки каво тъчно пропускам в моя код, а с else if, е готино, но просто разцъквам сложнотия, и дори не ми минава през главата това което си направил. Поздравления за което, много яко!

Пак ти благодаря, но ако някой би могъл да даде правилни насоки за моя код, свалям му шапка.

0
krasizorbov avatar krasizorbov 548 Точки

Понеже утре е изпита днес не ми се занимава гледай да си починеш за утре не се изгърбвай.

0
Tzigoriyn avatar Tzigoriyn 44 Точки

Благодаря пак, и успех утре, пък кяквото сабя покаже. Аз нещо напълно съм изключил, спирам със задачите, но незнам дали ще релаксирам, Напръво ми изключи имагинерното мислене. А Англиския ми стана като Китайски не мога да схвана и два реда. Направо се омотах, а мислех, че що годе го знам.

ХА ХА ХА ...

Пак успех на всички утре.

0
jivkoss avatar jivkoss 4 Точки

Благодаря за решението. Можеш ли да ми кажеш какво означава многоточието пред newArray на този ред: result.splice(index, 0, ...newArray); ?

0
21/01/2021 17:59:51
krasizorbov avatar krasizorbov 548 Точки

Това е JS спред оператора. За повече инфо тук: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Spread_syntax

0
jivkoss avatar jivkoss 4 Точки

Благодаря

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