1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

JavaScriptオブジェクトのプロパティへのアクセス方法

Posted at

概要

JavaScriptオブジェクトについてのまとめ
参考:https://jsprimer.net/basic/object/

オブジェクトとは

オブジェクトはプロパティの集合です。プロパティとは名前(キー)と値(バリュー)が対になったものです。 プロパティのキーには文字列またはSymbolが利用でき、値には任意のデータを指定できます。 また、1つのオブジェクトは複数のプロパティを持てるため、1つのオブジェクトで多種多様な値を表現できます。

こういうやつ

const obj = {
  hoge:'huga',
  foo:'bar'
};

プロパティへのアクセス方法

オブジェクトはプロパティの集合なので、プロパティにアクセスしましょう。
アクセス方法は以下の2通りです

ドット記法

オブジェクトに対してドットで繋げる記法。
ドット記法では、変数名と同じく識別子の命名規則を満たす必要がある。
具体的には以下の通り。

const obj = {
  hoge:'huga',
  123:456,
 'my-house':'house'
};

console.log(obj.hoge);       // OK 
console.log(obj.123);        // NG (数字から始まっているため)
console.log(obj.my-house);   // NG (ハイフンを含んでいるため)

ブラケット記法

[] の間に任意の式を書く。
プロパティ名は文字列へと暗黙的に変換される。
具体的には以下の通り


const obj = {
  hoge:'huga',
  123:456,
 'my-house':'house'
};
const is_hoge = 'hoge';

console.log(obj['hoge']);       // 'huga'
console.log(obj[123]);          // 456
console.log(obj['my-house']);   // 'house'
console.log(obj[is_hoge]);      // 'huga'

オブジェクトと分割代入

何度もプロパティを指定するのはめんどくさいので、プロパティを変数として定義できる。


const obj = {
  hoge:'huga',
  number:456,
  house:'house'
};
const a = obj.hoge;
const b = obj.number;
const c = obj.house;

console.log(a)    // 'huga' 
console.log(b)  // 456
console.log(c)   // 'house'

上記のように変数にプロパティを代入する場合は、分割代入を使用すると短く書ける。

const obj = {
  hoge:'huga',
  number:456,
  house:'house'
};
const {hoge, number, house} = obj;

console.log(hoge)    // 'huga' 
console.log(number)  // 456
console.log(house)   // 'house'

プロパティ名と変数名が一致していないとできないので注意です。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?