オブジェクト

オブジェクトとは

  • オブジェクト = 辞書
{プロパティ1: 値1, プロパティ2: 値2}

オブジェクト指向

  • グローバルに定義された関数を使って様々な型の値を処理するのではなく、その型で定義されたメソッドを使って値を処理するような考え方
// グローバルに定義された関数を使った記述
// sort() 関数に配列 a を引数として渡している
sort(a)

// オブジェクト指向的な記述
// 配列 a の sort() メソッドを呼び出している
a.sort()

プロパティアクセス式

let o = {
  x: 1,
  y: {
    z: 3
  }
};

console.log( o.x ); // 1
console.log( o.y.z ); // 3
console.log( o['x'] ); // 1
let a = [o, 4, [5, 6]];

console.log( a[1] ); // 4
console.log( a[2][1] ); // 6
let user = {
  address1: 'Hyogo',
  address2: 'Kobe',
  address3: '5',
};

console.log( user.address1 ); // Hyogo
console.log( user['address1'] ); // Hyogo

let addr = '';

for (let i = 1; i < 4; i++) {
  addr += user[address${i}] + '\n';
}

console.log(addr);
// Hyogo
// Kobe
// 5

オブジェクト同士の比較

  • オブジェクトは値で比較しない
    • 同じプロパティでプロパティの値が同じでも、異なる2つのオブジェクトは等しいと判断されない
let a = {x: 1}, b = {x: 1};
console.log(a === b); // false

let c = [], d = [];
console.log(c === d); // false
  • オブジェクトは基本型と区別するために、参照型 と呼ばれることがある
    • オブジェクトの値は参照であり、オブジェクトは参照で比較する
    • 2つのオブジェクト値は、両方が同じオブジェクトを参照している場合のみ同一と判定される
let a = [];
let b = a;
a[0] = 1;

console.log(b[0]); // 1
console.log(a === b); // true

オブジェクトのループ

const fruits = [
  {
    "id001": {
      "name": "apple",
      "price": 200,
    }
  },
  {
    "id002": {
      "name": "banana",
      "price": 380,
    }
  }
];

for (let f in fruits) {
  console.log(f);
  let ff = fruits[f];
  console.log(ff);
  console.log(ff[Object.keys(ff)]);
  console.log(ff[Object.keys(ff)].name);
  console.log(ff[Object.keys(ff)]['name']);
};

// 0
// { id001: { name: 'apple', price: 200 } }
// { name: 'apple', price: 200 }
// apple
// apple

// 1
// { id002: { name: 'banana', price: 380 } }
// { name: 'banana', price: 380 }
// banana
// banana

オブジェクトのキー・値を取得

Object.keys()

const object1 = {
  a: 'somestring',
  b: 42,
  c: false
};

console.log(Object.keys(object1));
// expected output: Array ["a", "b", "c"]

Object.values()

const object1 = {
  a: 'somestring',
  b: 42,
  c: false
};

console.log(Object.values(object1));
// expected output: Array ["somestring", 42, false]

Object.entries()

const fruits = {
  banana: 28,
  apple: 17,
  orange: 54,
}

const entries = Object.entries(fruits)
console.log(entries)
// [ [ 'banana', 28 ], [ 'apple', 17 ], [ 'orange', 54 ] ]