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
willystyle avatar willystyle 2472 Точки

Две грешки:

1) в case 'contains': замени

if (array.indexOf(element) === -1) {

console.log('-1');

} else {

console.log('0');

}

със console.log(array.indexOf(element));  // това ще ти оправи тест 3 където явно има contains за елемент, който не е на нулева позиция

2) в case 'shift': добави

index = index % array.length; // това ще ти оправи тестове 7 и 11 където явно има shift с дължина по-голяма от дължината на масива, а това ще ти оправи цикличността.

https://pastebin.com/NT8NQ4F0

 

1
Tzigoriyn avatar Tzigoriyn 44 Точки

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

За първот indexOf го видях преди 2 дни гледах запис на упражнение, опитах няколко пъти с console.log, но не ми се получи и реших с проверка. Явно се чупи по този начин.

А това " index = index % array.length; " го виждам за първи път и незнам какво прави. Всъщност рабрах след твоите указания, без него не пръви премествания след максималната големина на масива, докато % делено на индекса от дължината получава остатъка от премествания които трябва да направи, когато index > array.length.

Благодаря, това беше идеята на въпроса ми.

ГОУЕМ СИ :)!!!

 

1
Insanewpe avatar Insanewpe 1 Точки

На първо лице стъпката actualManipulation трябва да ти е най-отдолу в whileloop, за да се завърти правилно самкият loop.

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