Object.values()
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
Object.values()
静的メソッドは、指定されたオブジェクトが持つ列挙可能なプロパティの文字列キーのプロパティ値を配列で返します。
試してみましょう
構文
Object.values(obj)
引数
obj
-
オブジェクト。
返値
指定されたオブジェクトが持つ列挙可能なプロパティの文字列キーのプロパティ値を配列で返します。
解説
Object.values()
は object
に直接得られる文字列キーのプロパティを列挙した配列の値を返します。これは for...in
ループで反復処理するのと同じですが、for...in
ループではプロトタイプチェーンのプロパティも列挙されます。 Object.values()
が返す配列の順序は、 for...in
ループで指定された順序と同じです。
プロパティキーが必要な場合は、代わりに Object.keys()
を使用します。プロパティのキーと値の両方が必要な場合は、代わりに Object.entries()
を使用します。
例
Object.values の使用
const obj = { foo: "bar", baz: 42 };
console.log(Object.values(obj)); // ['bar', 42]
// 配列風オブジェクト
const arrayLikeObj1 = { 0: "a", 1: "b", 2: "c" };
console.log(Object.values(arrayLikeObj1)); // ['a', 'b', 'c']
// ランダムなキー順序を持つ配列風オブジェクト
// 数値のキーを使用すると、値はキーの番号順に返される
const arrayLikeObj2 = { 100: "a", 2: "b", 7: "c" };
console.log(Object.values(arrayLikeObj2)); // ['b', 'c', 'a']
// 列挙可能でないプロパティ getFoo がある
const myObj = Object.create(
{},
{
getFoo: {
value() {
return this.foo;
},
},
},
);
myObj.foo = "bar";
console.log(Object.values(myObj)); // ['bar']
プリミティブに Object.values() を使用
オブジェクト以外の引数はオブジェクトに変換されます。 undefined
や null
はオブジェクトに強制できず、 TypeError
が発生します。文字列のみが自分自身で列挙可能なプロパティを持つことができ、 他のプリミティブはすべて空の配列を返します。
// オブジェクトでない引数はオブジェクトへと型強制される
console.log(Object.values("foo")); // ['f', 'o', 'o']
// undefined と null 以外のプリミティブは、自分自身でプロパティを持つことはない
console.log(Object.values(100)); // []
仕様書
Specification |
---|
ECMAScript Language Specification # sec-object.values |
ブラウザーの互換性
BCD tables only load in the browser