{
    "componentChunkName": "component---src-templates-docs-js",
    "path": "/veckoanvisningar/kursvecka-04/utmaningar",
    "result": {"data":{"site":{"siteMetadata":{"title":"Linnéuniversitetet","language":"sv","courseCode":"1dv025"}},"mdx":{"fields":{"id":"b27f8b48-fe65-5e38-ba77-09d9f947591f","title":"Utmaningar","slug":"/veckoanvisningar/kursvecka-04/utmaningar"},"body":"var _excluded = [\"components\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n/* @jsxRuntime classic */\n\n/* @jsx mdx */\nvar _frontmatter = {\n  \"title\": \"Utmaningar\",\n  \"metaTitle\": \"1DV025 | Utmaningar kursvecka 4\",\n  \"metaDescription\": \"metaDescription\",\n  \"order\": 4\n};\nvar layoutProps = {\n  _frontmatter: _frontmatter\n};\nvar MDXLayout = \"wrapper\";\nreturn function MDXContent(_ref) {\n  var components = _ref.components,\n      props = _objectWithoutProperties(_ref, _excluded);\n\n  return mdx(MDXLayout, _extends({}, layoutProps, props, {\n    components: components,\n    mdxType: \"MDXLayout\"\n  }), mdx(\"p\", null, \"Nedan finns ett antal program, f\\xF6rs\\xF6k l\\xE4sa koden och se vad som kommer att skrivas ut.\"), mdx(\"p\", null, \"Du kan f\\xE5 tips om du klickar upp stycket med \\\"Alternativ\\\", d\\xE5 f\\xE5r du ett antal alternativ att v\\xE4lja p\\xE5, s\\xE5 blir det lite l\\xE4ttare.\"), mdx(\"p\", null, \"Om du inte lyckas s\\xE5 kan du alltid prova koden och k\\xF6ra den p\\xE5 egen hand f\\xF6r att se vad som h\\xE4nder, eller ta upp fr\\xE5gan p\\xE5 en handledning.\"), mdx(\"h2\", null, \"Fr\\xE5ga 04-01: Vad returnerar funktionen?\"), mdx(\"p\", null, \"F\\xF6rs\\xF6k l\\xE4sa koden, f\\xF6lj vad som sker och f\\xF6rs\\xF6k se vad som skrivs ut. Klicka p\\xE5 \\\"Alternativ\\\" nedan s\\xE5 f\\xE5r du ett par alternativ och ett av dem \\xE4r r\\xE4tt.\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-js\"\n  }, \"const run = function () {\\n  const numbers = [1, 2, 3, 4, 5]\\n  let length = numbers.length\\n\\n  return numbers[length]\\n}\\n\\nlet result = run()\\nconsole.log(result)\\n\")), mdx(\"details\", null, mdx(\"summary\", null, \"Alternativ\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"undefined\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"[1, 2, 3, 4, 5]\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"5\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"1\"))), mdx(\"details\", null, mdx(\"summary\", null, \"Kommentar\"), mdx(\"p\", null, \"  I och med att length i detta fall \\xE4r 5, s\\xE5 kommer numbers\", \"[length]\", \" att referera\\ntill index 5 som inte finns i arrayen. D\\xE4rav svaret \\\"undefined\\\".\")), mdx(\"h2\", null, \"Fr\\xE5ga 04-02: Vad returnerar funktionen?\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-js\"\n  }, \"const run = function () {\\n  const numbers = [1, 23, 13, 4, 8]\\n\\n  numbers.sort()\\n\\n  return numbers\\n}\\n\\nlet result = run()\\nconsole.log(result)\\n\")), mdx(\"details\", null, mdx(\"summary\", null, \"Alternativ\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"[1, 13, 23, 4, 8]\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"[1, 4, 8, 12, 23]\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"[23, 12, 8, 4, 1]\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"[1, 23, 12, 4, 8]\"))), mdx(\"details\", null, mdx(\"summary\", null, \"Kommentar\"), mdx(\"p\", null, \"  sort-funktionen sorterar lexikografiskt, den g\\xF6r om samtliga nummer till\\nstr\\xE4ngar och sorterar str\\xE4ngarna. D\\xE4rav att 13 kommer efter 1.\\nF\\xF6r att l\\xF6sa detta beh\\xF6ver vi skicka med en j\\xE4mf\\xF6relsefunktion till sort:\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-javascript\",\n    \"metastring\": \"runkit\",\n    \"runkit\": true\n  }, \"    const run = function () {\\n      const numbers = [1, 23, 13, 4, 8]\\n\\n      numbers.sort((a, b) => a - b)\\n\\n      return numbers\\n    }\\n\\n    let result = run()\\n    console.log(result)\\n\"))), mdx(\"h2\", null, \"Fr\\xE5ga 04-03: Vilka av funktionerna l\\xE4mnar argumentet op\\xE5verkat?\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-js\"\n  }, \"// ------------------------------------------------------------------\\nlet anArray = [2, 6, 8]\\nconst functionA = function (hej) {\\n  hej[hej.length] = 10\\n  return hej\\n}\\nfunctionA(anArray)\\nanArray // is anArray still [2, 6, 8]?\\n\\n// ------------------------------------------------------------------\\nanArray = [2, 6, 8]\\nconst functionB = function (arr) {\\n  const copy = Array.from(arr)\\n  copy.push(10)\\n  return copy\\n}\\nfunctionB(anArray)\\nanArray // is anArray still [2, 6, 8]?\\n\\n// ------------------------------------------------------------------\\nanArray = [2, 6, 8]\\nlet functionC = function (arr) {\\n  return arr.map(Math.sqrt)\\n}\\nfunctionC(anArray)\\nanArray // is anArray still [2, 6, 8]?\\n\\n// ------------------------------------------------------------------\\nlet aNumber = 2\\nconst functionD = function (nbr) {\\n  nbr = nbr * nbr\\n  return nbr\\n}\\nfunctionD(aNumber)\\naNumber // is aNumber still 2?\\n\")), mdx(\"details\", null, mdx(\"summary\", null, \"Alternativ\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"functionA\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"functionB\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"functionC\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"functionD\"))), mdx(\"details\", null, mdx(\"summary\", null, \"Kommentar\"), mdx(\"h3\", null, \"Funktion A\"), mdx(\"p\", null, \"  I detta fall skickas arrayens referens in som argument till funktionen och\\nmotsvaras av parametern \\\"hej\\\". Detta betyder att \\\"hej\\\" och \\\"anArray\\\" refererar\\ntill samma array.\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-mermaid\"\n  }, \"  graph TD\\n    A[anArray] -->|refererar| B(\\\"[2, 6, 8]\\\")\\n    C[hej] -->|refererar| B\\n\")), mdx(\"p\", null, \"  Det betyder att oavsett om det \\xE4r hej eller anArray du anv\\xE4nder n\\xE4r du g\\xF6r en\\nf\\xF6r\\xE4ndring av arrayen s\\xE5 p\\xE5verkas b\\xE5da referensernas underliggande v\\xE4rde.\"), mdx(\"p\", null, \"  \", mdx(\"em\", {\n    parentName: \"p\"\n  }, \"Funktion A p\\xE5verkar argumentet och \\xE4r s\\xE5ledes en funktion med sidoeffekter.\")), mdx(\"h3\", null, \"Funktion B\"), mdx(\"p\", null, \"  I funktion B s\\xE5 v\\xE4ljer du ist\\xE4llet att g\\xF6ra en kopia p\\xE5 parametern. N\\xE4r du\\narbetar med kopian s\\xE5 \\xE4r argumentet of\\xF6r\\xE4ndrat.\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-mermaid\"\n  }, \"graph TD\\n    A[anArray] -->|refererar| B(\\\"[2, 6, 8]\\\")\\n    C[arr] -->|refererar| B\\n    D[copy] -->|refererar| E(\\\"[2, 6, 8, 10]\\\")\\n\")), mdx(\"p\", null, \"  En kopia kan g\\xF6ras p\\xE5 flera olika s\\xE4tt men Array.from \\xE4r ofta att f\\xF6redra\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-javascript\"\n  }, \"    const copy = Array.from(arr)\\n\")), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-javascript\"\n  }, \"    const copy = [...arr]\\n\")), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-javascript\"\n  }, \"    const copy = arr.slice()\\n\")), mdx(\"p\", null, \"  \", mdx(\"em\", {\n    parentName: \"p\"\n  }, \"Funktion B p\\xE5verkar inte argumentet och \\xE4r en funktion utan sidoeffekter.\")), mdx(\"h3\", null, \"Funktion C\"), mdx(\"p\", null, \"  L\\xE4ser vi p\\xE5 i dokumentation f\\xF6r \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map\"\n  }, \"Array.map\"), \" s\\xE5 f\\xE5r vi information om att map skapar en kopia av arrayen.\"), mdx(\"p\", null, \"  \", mdx(\"em\", {\n    parentName: \"p\"\n  }, \"Funktion C p\\xE5verkar inte argumentet och \\xE4r en funktion utan sidoeffekter.\")), mdx(\"h3\", null, \"Funktion D\"), mdx(\"p\", null, \"  aNumber \\xE4r ett nummer som \\xE4r en primitiv datatyp och d\\xE4rmed av v\\xE4rdetyp\\ntill skillnad fr\\xE5n arrayer som \\xE4r objekttyper och d\\xE4rmed av referenstyp. Det\\nbetyder att argumentet kopieras till parametern och du beh\\xF6ver allts\\xE5 inte\\nmanuellt g\\xF6ra en kopia.\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-mermaid\"\n  }, \"  graph TD\\n    A[aNumber, 2]\\n    C[nbr, 2]\\n\")), mdx(\"p\", null, \"  \", mdx(\"em\", {\n    parentName: \"p\"\n  }, \"Funktion D p\\xE5verkar inte argumentet och \\xE4r en funktion utan sidoeffekter.\"))), mdx(\"h2\", null, \"Fr\\xE5ga 04-04: Vad returnerar funktionen?\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-js\"\n  }, \"const run = function () {\\n  const arr = ['ett', 'tv\\xE5', 'tre', 'fyra', 'fem']\\n\\n  return arr.slice(2, 3)\\n}\\n\\nlet result = run()\\nconsole.log(result)\\n\")), mdx(\"details\", null, mdx(\"summary\", null, \"Alternativ\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"['ett', 'tv\\xE5', 'tre', 'fyra', 'fem']\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"['tv\\xE5', 'tre']\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"['tre']\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"['tre', 'fyra']\"))), mdx(\"h2\", null, \"Fr\\xE5ga 04-05: Vad returnerar funktionen?\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-js\"\n  }, \"const run = function () {\\n  const numbers = [-129, 123, 2, 3987]\\n  let length = numbers.length\\n  let x = numbers[0]\\n\\n  for (let i = 1; i < length; i++) {\\n    if (numbers[i] > x) {\\n      x = numbers[i]\\n    }\\n  }\\n  return x\\n}\\n\\nlet result = run()\\nconsole.log(result)\\n\")), mdx(\"details\", null, mdx(\"summary\", null, \"Alternativ\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"-129\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"123\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"2\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"3987\"))), mdx(\"details\", null, mdx(\"summary\", null, \"Kommentar\"), mdx(\"p\", null, \"  Lite sv\\xE5rt att h\\xE4nga med? Det beror p\\xE5 att variablerna inte namngivits p\\xE5 ett\\nbra s\\xE4tt. Titta ist\\xE4llet p\\xE5:\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-javascript\",\n    \"metastring\": \"runkit\",\n    \"runkit\": true\n  }, \"const run = function () {\\n  const numbers = [-129, 123, 2, 3987]\\n  let length = numbers.length\\n  let max = numbers[0]\\n\\n  for (let i = 1; i < length; i++) {\\n    if (numbers[i] > max) {\\n      max = numbers[i]\\n    }\\n  }\\n  return max\\n}\\n\\nlet result = run()\\nconsole.log(result)\\n\")), mdx(\"p\", null, \"  Enklare? Funktionen listar ut vilket element som \\xE4r det st\\xF6rsta i arrayen. Ett\\nalternativt s\\xE4tt att g\\xF6ra detta p\\xE5 \\xE4r:\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-javascript\",\n    \"metastring\": \"runkit\",\n    \"runkit\": true\n  }, \"const run = function () {\\n  const numbers = [-129, 123, 2, 3987]\\n\\n  return Math.max(...numbers)\\n}\\n\\nlet result = run()\\nconsole.log(result)\\n\")), mdx(\"p\", null, \"  (Dock ska du inte anv\\xE4nda med detta f\\xF6r st\\xF6rre arrayer (>30k element) d\\xE5 det\\nleder till att koden kraschar.)\")), mdx(\"h2\", null, \"Fr\\xE5ga 04-06: Vad returnerar funktionen?\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-js\"\n  }, \"const addOddNumber = (arr, value) => {\\n\\n  if (typeof value !== 'number' || Number.isNaN(value)){\\n    throw new TypeError('Value must be of type Number')\\n  }\\n\\n  if (value % 2 === 0) {\\n    throw new Error('Value must be an odd number')\\n  }\\n\\n  arr.push(value)\\n\\n  return arr\\n}\\n\\ntry {\\n  let result = addOddNumber([3, 7, 1, 11], 12)\\n  console.log(result)\\n\\n} catch (e) {\\n  console.log(e)\\n}\\n\")), mdx(\"details\", null, mdx(\"summary\", null, \"Alternativ\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Value must be of type Number\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"[3, 7, 1, 11, 124]\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Error: Value must be an odd number\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"5\"))));\n}\n;\nMDXContent.isMDXComponent = true;","tableOfContents":{"items":[{"url":"#fråga-04-01-vad-returnerar-funktionen","title":"Fråga 04-01: Vad returnerar funktionen?"},{"url":"#fråga-04-02-vad-returnerar-funktionen","title":"Fråga 04-02: Vad returnerar funktionen?"},{"url":"#fråga-04-03-vilka-av-funktionerna-lämnar-argumentet-opåverkat","title":"Fråga 04-03: Vilka av funktionerna lämnar argumentet opåverkat?","items":[{"url":"#funktion-a","title":"Funktion A"},{"url":"#funktion-b","title":"Funktion B"},{"url":"#funktion-c","title":"Funktion C"},{"url":"#funktion-d","title":"Funktion D"}]},{"url":"#fråga-04-04-vad-returnerar-funktionen","title":"Fråga 04-04: Vad returnerar funktionen?"},{"url":"#fråga-04-05-vad-returnerar-funktionen","title":"Fråga 04-05: Vad returnerar funktionen?"},{"url":"#fråga-04-06-vad-returnerar-funktionen","title":"Fråga 04-06: Vad returnerar funktionen?"}]},"parent":{"relativePath":"veckoanvisningar/kursvecka-04/utmaningar.md"},"frontmatter":{"metaTitle":"1DV025 | Utmaningar kursvecka 4","metaDescription":"metaDescription","fullWidth":null}},"allMdx":{"edges":[{"node":{"fields":{"slug":"/examinationsuppgifter","title":"Examinationsuppgifter"}}},{"node":{"fields":{"slug":"/samlingar","title":"Samlingar"}}},{"node":{"fields":{"slug":"/","title":"Webbprogrammering på klientsidan (1DV025) - en kurs med JavaScript i fokus"}}},{"node":{"fields":{"slug":"/sandbox/basic-elements","title":"Basic elements"}}},{"node":{"fields":{"slug":"/sandbox/code","title":"Code"}}},{"node":{"fields":{"slug":"/sandbox/exercise","title":"Exercises"}}},{"node":{"fields":{"slug":"/sandbox/frontmatter","title":"Frontmatter"}}},{"node":{"fields":{"slug":"/sandbox/hint","title":"Hint"}}},{"node":{"fields":{"slug":"/sandbox","title":"Sandbox"}}},{"node":{"fields":{"slug":"/sandbox/markdown-import","title":"Imported markdown"}}},{"node":{"fields":{"slug":"/sandbox/mermaid","title":"Mermaid"}}},{"node":{"fields":{"slug":"/sandbox/tabs","title":"Tabs"}}},{"node":{"fields":{"slug":"/sandbox/youtube","title":"YouTube"}}},{"node":{"fields":{"slug":"/studieguide/examination","title":"Examination"}}},{"node":{"fields":{"slug":"/studieguide/forvantningar","title":"Förväntningar"}}},{"node":{"fields":{"slug":"/studieguide","title":"Studieguide"}}},{"node":{"fields":{"slug":"/studieguide/kommunikationsstrategi","title":"Kommunikationsstrategi"}}},{"node":{"fields":{"slug":"/studieguide/kursledning","title":"Kursledning"}}},{"node":{"fields":{"slug":"/studieguide/kursvardering","title":"Kursvärdering"}}},{"node":{"fields":{"slug":"/studieguide/larresurser","title":"Lärresurser"}}},{"node":{"fields":{"slug":"/studieguide/registrering","title":"Registrering"}}},{"node":{"fields":{"slug":"/studieguide/valkommen","title":"🎉 Välkommen!"}}},{"node":{"fields":{"slug":"/veckoanvisningar","title":"Veckoanvisningar"}}},{"node":{"fields":{"slug":"/examinationsuppgifter/delkurs-a/a1","title":"A1 - Online-test"}}},{"node":{"fields":{"slug":"/examinationsuppgifter/delkurs-a/a2-beskrivande-statistik","title":"A2 - Beskrivande statistik"}}},{"node":{"fields":{"slug":"/examinationsuppgifter/delkurs-a/a3-tjugoett","title":"A3 - Tjugoett"}}},{"node":{"fields":{"slug":"/examinationsuppgifter/delkurs-a","title":"Delkurs A"}}},{"node":{"fields":{"slug":"/examinationsuppgifter/delkurs-b/b1","title":"B1 - Online-test"}}},{"node":{"fields":{"slug":"/examinationsuppgifter/delkurs-b/b2","title":"B2 - The Quiz app"}}},{"node":{"fields":{"slug":"/examinationsuppgifter/delkurs-b/b3","title":"B3 - PWD"}}},{"node":{"fields":{"slug":"/examinationsuppgifter/delkurs-b","title":"Delkurs B"}}},{"node":{"fields":{"slug":"/examinationsuppgifter/om","title":"Om examination"}}},{"node":{"fields":{"slug":"/examinationsuppgifter/om/inlamning-via-mr","title":"Inlämning via Merge request"}}},{"node":{"fields":{"slug":"/examinationsuppgifter/om/kom-igang","title":"Kom igång med en uppgift"}}},{"node":{"fields":{"slug":"/examinationsuppgifter/om/muntlig-examination","title":"Muntlig examination"}}},{"node":{"fields":{"slug":"/samlingar/delkurs-a/guider","title":"Guider"}}},{"node":{"fields":{"slug":"/samlingar/delkurs-a","title":"Delkurs A"}}},{"node":{"fields":{"slug":"/samlingar/delkurs-a/inspelningar","title":"Stödjande inspelningar"}}},{"node":{"fields":{"slug":"/samlingar/delkurs-a/ovningar","title":"Övningar"}}},{"node":{"fields":{"slug":"/samlingar/delkurs-b/inspelningar","title":"Stödjande inspelningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-01","title":"Kursvecka 1 - Satser"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-01/lasanvisningar","title":"Läsanvisningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-01/oversikt","title":"Översikt"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-01/utmaningar","title":"Utmaningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-02/guide-ovningsuppgifter","title":"Guide - Övningsuppgift"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-02/guide-vscode","title":"Guide - VSCode"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-02","title":"Kursvecka 2 - Funktioner, moduler"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-02/lasanvisningar","title":"Läsanvisningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-02/oversikt","title":"Översikt"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-02/ovningsuppgifter","title":"Övningsuppgifter"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-02/utmaningar","title":"Utmaningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-01/guide-nodejs","title":"Guide - Node.js"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-03/examinationsuppgift","title":"Guide - Examinationsuppgift"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-03/guide-jsdoc","title":"Guide - JSDoc"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-03","title":"Kursvecka 3 - Styrstrukturer"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-03/oversikt","title":"Översikt"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-03/lasanvisningar","title":"Läsanvisningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-03/ovningsuppgifter","title":"Övningsuppgifter"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-03/utmaningar","title":"Utmaningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-04","title":"Kursvecka 4 - Arrayer"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-04/lasanvisningar","title":"Läsanvisningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-04/oversikt","title":"Översikt"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-04/ovningsuppgifter","title":"Övningsuppgifter"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-04/utmaningar","title":"Utmaningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-05/guide-jest-spec-name","title":"Guide - Så gör du när du inte vill köra alla tester varje gång"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-05","title":"Kursvecka 5 - Objekt"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-05/lasanvisningar","title":"Läsanvisningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-05/oversikt","title":"Översikt"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-05/ovningsuppgifter","title":"Övningsuppgifter"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-05/utmaningar","title":"Utmaningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-06","title":"Kursvecka 6 - Klasser"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-06/lasanvisningar","title":"Läsanvisningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-06/oversikt","title":"Översikt"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-06/ovningsuppgifter","title":"Övningsuppgifter"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-06/utmaningar","title":"Utmaningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-07","title":"Kursvecka 7 - Arv"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-07/lasanvisningar","title":"Läsanvisningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-07/oversikt","title":"Översikt"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-07/ovningsuppgifter","title":"Övningsuppgifter"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-07/utmaningar","title":"Utmaningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-08","title":"Kursvecka 8 - Webbläsaren"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-08/lasanvisningar","title":"Läsanvisningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-08/ovningsuppgifter","title":"Övningsuppgifter"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-08/oversikt","title":"Översikt"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-08/utmaningar","title":"Utmaningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-09","title":"Kursvecka 9 - HTML-element"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-09/lasanvisningar","title":"Läsanvisningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-09/oversikt","title":"Översikt"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-09/ovningsuppgifter","title":"Övningsuppgifter"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-09/utmaningar","title":"Utmaningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-10","title":"Kursvecka 10 - Webbkomponenter"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-10/lasanvisningar","title":"Läsanvisningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-10/oversikt","title":"Översikt"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-10/ovningsuppgifter","title":"Övningsuppgifter"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-11","title":"Kursvecka 11 - Händelser"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-11/lasanvisningar","title":"Läsanvisningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-11/oversikt","title":"Översikt"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-11/ovningsuppgifter","title":"Övningsuppgifter"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-11/utmaningar","title":"Utmaningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-12","title":"Kursvecka 12 - AsyncAwait"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-12/lasanvisningar","title":"Läsanvisningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-12/oversikt","title":"Översikt"}}},{"node":{"fields":{"slug":"/samlingar/delkurs-b","title":"Delkurs B"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-13","title":"Kursvecka 13 - Komposition"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-12/utmaningar","title":"Utmaningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-13/ovningsuppgifter","title":"Övningsuppgifter"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-13/oversikt","title":"Översikt"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-13/utmaningar","title":"Utmaningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-14","title":"Kursvecka 14 - Lagring"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-14/lasanvisningar","title":"Läsanvisningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-14/oversikt","title":"Översikt"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-14/ovningsuppgifter","title":"Övningsuppgifter"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-14/utmaningar","title":"Utmaningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-15","title":"Kursvecka 15 - Installerbara PWAs"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-15/lasanvisningar","title":"Läsanvisningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-15/oversikt","title":"Översikt"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-15/utmaningar","title":"Utmaningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-16","title":"Kursvecka 16 - Pålitliga PWAs"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-16/lasanvisningar","title":"Läsanvisningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-16/oversikt","title":"Översikt"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-16/utmaningar","title":"Utmaningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-17-19","title":"Kursvecka 17-19 - Kapabla PWAs"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-17-19/lasanvisningar","title":"Läsanvisningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-17-19/oversikt","title":"Översikt"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-17-19/utmaningar","title":"Utmaningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-20","title":"Kursvecka 20 - Examination"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-20/oversikt","title":"Översikt"}}},{"node":{"fields":{"slug":"/examinationsuppgifter/om/resurser/kom-igang","title":"Kom Igang"}}},{"node":{"fields":{"slug":"/examinationsuppgifter/om/resurser/mr","title":"Mr"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-02/git-guider/00-om-git","title":"Introduction"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-01/resurser/inspelningar","title":"Inspelningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-02/git-guider/10-git","title":"Setting Up"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-02/git-guider/12-commit-messages","title":"Commits best practice"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-02/git-guider/12-multipla-datorer","title":"Multiple computers"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-02/git-guider/14-multiple-git-user-configs","title":"Multiple Git User Configs"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-02/git-guider/16-ssh-troubleshoot","title":"SSH-keys troubleshooting"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-02/git-guider/20-detta-hander-vid-git-kommandon","title":"Detta händer vid git-kommandon"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-02/git-guider","title":"Guide - Git versionshantering"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-03/resurser/inspelningar","title":"Inspelningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-03/resurser/ovningar","title":"Ovningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-02/resurser/inspelningar","title":"Inspelningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-02/resurser/ovningar","title":"Ovningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-04/resurser/inspelningar","title":"Inspelningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-04/resurser/ovningar","title":"Ovningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-05/resurser/inspelningar","title":"Inspelningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-05/resurser/ovningar","title":"Ovningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-06/resurser/inspelningar","title":"Inspelningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-06/resurser/ovningar","title":"Ovningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-07/resurser/inspelningar","title":"Inspelningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-07/resurser/ovningar","title":"Ovningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-08/resurser/inspelningar","title":"Inspelningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-08/resurser/ovningar","title":"Ovningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-09/resurser/inspelningar","title":"Inspelningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-09/resurser/ovningar","title":"Ovningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-10/resurser/inspelningar","title":"Inspelningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-10/resurser/ovningar","title":"Ovningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-11/resurser/inspelningar","title":"Inspelningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-11/resurser/ovningar","title":"Ovningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-12/resurser/inspelningar","title":"Inspelningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-12/resurser/ovningar","title":"Ovningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-13/resurser/inspelningar","title":"Inspelningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-13/resurser/ovningar","title":"Ovningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-14/resurser/inspelningar","title":"Inspelningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-14/resurser/ovningar","title":"Ovningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-15/resurser/inspelningar","title":"Inspelningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-16/resurser/inspelningar","title":"Inspelningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-17-19/resurser/inspelningar","title":"Inspelningar"}}},{"node":{"fields":{"slug":"/samlingar/delkurs-b/ovningar","title":"Övningar"}}},{"node":{"fields":{"slug":"/veckoanvisningar/kursvecka-12/ovningsuppgifter","title":"Övningsuppgifter"}}}]}},"pageContext":{"id":"b27f8b48-fe65-5e38-ba77-09d9f947591f"}},
    "staticQueryHashes": ["253607798","3706406642","710574383"]}