私はこのオブジェクトを持っています:
var data = {"id": 1, "second": "abcd"};
これらはフォームからの値です。これを検証用の関数に渡します。
上記のプロパティが存在する場合、data["id"]
およびdata["second"]
で値を取得できますが、他の値に基づいて、プロパティが異なる場合があります。
プロパティ名に関係なくdata
から値を取得するにはどうすればよいですか?
それらのプロパティの名前を知らずにオブジェクトのプロパティにアクセスするには、for ... in
ループを使用できます。
for(key in data) {
if(data.hasOwnProperty(key)) {
var value = data[key];
//do something with value;
}
}
これを1行で行いたい場合は、以下を試してください。
Object.keys(a).map(function(key){return a[key]})
ES2017では、 Object.values()
を使用できます。
Object.values(data)
執筆時点では、サポートは制限されています(FireFoxおよびChrome)。IEを除くすべての主要なブラウザがこれをサポートするようになりました。
ES2015では、これを使用できます。
Object.keys(data).map(k => data[k])
$
が定義されている場合、反復できます
var data={"id" : 1, "second" : "abcd"};
$.each(data, function() {
var key = Object.keys(this)[0];
var value = this[key];
//do something with value;
});
キーの値がわかっている場合は、次の方法でアクセスできます
data.id
または
data["id"]
結論の質問はそれほど明確ではありませんが、最初の行からは間違っています。変数データはObjectではなくArray
オブジェクトの属性にアクセスするのはとても簡単です:
alert(data.second);
しかし、これで完全に質問に答えられない場合は、それを明確にして投稿してください。
ありがとう!
lodash_.values(object)
の使用
_.values({"id": 1, "second": "abcd"})
[ 1, 'abcd' ]
lodash
には、配列、オブジェクト、コレクション、文字列など、JavaScriptに組み込まれているwishを操作するためのその他の関数がすべて含まれていますゆっくりと言語に向かっていくことです)。