JSでのObject関連のあれこれを書き留めておく。自分用メモ。
Node.jsでDynamoDBからデータを取得した時のObjectをうまいこと使いたいってことでいろいろ調べた結果です。
ObjectのKeyに変数を使う
オブジェクト定義時に[]
でkeyとなる変数を囲んで指定すれば、うまいことやってくれます。
var value = "salad"
var key = "name"
var obj = {[key]: value} // {"name": "salad"}
参考
JavaScript Primer - 迷わないための入門書
JavaScript Primerは、JavaScriptの基礎から応用までを一貫して学べる入門書です。
Objectのメンバ数を取得する
例えば、こんなObjectがあったときを考えます。
var userScore = {
"sato": 100,
"suzuki": 80,
"takahashi": 90,
"tanaka": 85
}
ユーザ名とそのユーザのスコアですね。
で、このオブジェクトからスコアが記録されているユーザの人数を取得したいときにどうしようかという話です。
もちろんObjectにlengthプロパティはありません。
console.log(userScore.length) // もちろん、undefined
Object.keys()を使用する
ObjectのKeyを要素とした配列を作成し、その配列のlengthプロパティを参照する
console.log(Object.keys(userScore).length) // 上のオブジェクトなら、出力は 4
参考
Object.keys() - JavaScript | MDN
Object.keys() 静的メソッドは、指定されたオブジェクトが持つプロパティの名前の配列を、通常のループで取得するのと同じ順序で返します。