vef1-2024

Vefforritun 1 kennd haustið 2024

View the Project on GitHub vefforritun/vef1-2024

Fyrirlestur – JavaScript array og objects

Vefforritun 1 — TÖL107G

Ólafur Sverrir Kjartansson, osk@hi.is


Samansöfn af gögnum


Array



Aðeins um const



const list = [1, 2, 3];

list.length; // 3

list[100] = 1; // má þó skilgr sem const

list.length; // 101

list = ''; // TypeError, ný týpa

Properties



const a = 'hello world';
a.length; // 11
a['length']; // 11
a.toUpperCase(); // "HELLO WORLD"
a['toUpperCase'](); // "HELLO WORLD"?!

Array methods


const list = [0, 1, 2];
list[0]; // 0
list.push('þrír'); // 4
list.join(', '); // '0, 1, 2, þrír'
list.pop(); // 'þrír'


Object



const person = {
  name: 'Jón Jónsson',

  // óleyfilegt breytunafn
  'home-address': 'Aðalgata 1',
  age: 100,
  registered: true,

  // trailing comma
  interests: ['foo', 'bar', 'baz', ],
};

const a = {};
a['1%-result']; // undefined
a.1%-result; // SyntaxError
const key = 'result';
a[key] = '10';
a[key]; // '10'
a.result; // '10'

delete

delete a.result;

in


const obj = { result: 1 };
obj.result; // 1
'result' in obj; // true
obj.info = '10'; // "foo"
obj['result-info'] = true; // true
delete obj.info; // true
'info' in obj; // false
obj; // { result: 1, result-info: true}


const data = { x: 1, y: 2, z: 3 };
Object.keys(data); // ['x', 'y', 'z']
Object.values(data); // [1, 2, 3]
Object.freeze(data);
delete data.x; // false
// afritum data yfir í result
const result = Object.assign({}, data);
const extra = { a: true, x: 9 };

// afritum data yfir í extra, yfirskrifar
Object.assign(extra, data);

Array er hlutur


const a = [1, 2, 3];
typeof a; // "object"
Array.isArray(a); // true


Samanburður


const obj = { a: 1 };
obj === { a: 1 }; // false
const result = obj;
obj === result; // true
const data = { a: 1 };
obj === data; // false;
// sama gildir fyrir fylki
const list = [1, 2, 3];
const list2 = [1, 2, 3];

list === list2; // false

Array og for lykkjur


const items = [1, 2, 3, 4, 5];

for (let i = 0; i < items.length; i++) {
  items[i] *= 2;
}
items; // [2, 4, 6, 8, 10]
const items = [1, 2, 3, 4, 5];

for (const item of items) {
  console.log(item);
}
1, 2, 3, 4, 5

Rest parameters



function sum(x, y, ...rest) {
  return x + y + rest.length;
}

sum(1, 2); // 3
sum(1, 2, 3, 4); // 5

function avg(...rest) {
  let sum = 0;
  for (const i of rest) {
    sum += i;
  }
  return sum / rest.length;
}
avg(1, 2, 3, 4, 5, 6); // 3.5

Spread operator


const list = [1, 2, 3];
console.log(...list); // 1 2 3

// sama og að hafa gert
console.log(1, 2, 3);

function sum(x, y, z) {
  return x + y + z;
}
sum(...list); // 6

// sama og að hafa gert
sum(1, 2, 3);
// getum gert í bland við önnur argument
avg(1, ...list, 10); // 3.4

[1, ...list, 10]; // [1, 1, 2, 3, 10]

// afritum fylki
[...list]; // [1, 2, 3]


Destructuring


const list = [1, 2, 3];
const [a, , b] = list;
console.log(a, b); // 1 3
const obj = { data: 1, result: 'hi' };
const { data, x, result } = obj;

console.log(data, x, result);
// 1 undefined 'hi'


Object eigindi


const a = '1';
const b = '2';
const c = { a, b }; // { a: "1", b: "2" };
const d = {
  result: '10',

  // eigindi úr segð
  [`result${c.a}`]: '10',
};

d; // { result: "10", result1 : "10" }

const utils = {

  // í staðinn fyrir sum: function (x, y)
  sum(x, y) {
    return x + y;
  },
};

utils.sum(1, 2); // 3