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?

【JavaScript】Object.fromEntries()の使い方と使用例

Posted at

Object.fromEntries() は、キーと値のペアのリスト(配列やMapなど)から新しいオブジェクトを作成するメソッドです。

逆の操作である Object.entries() と組み合わせることで、オブジェクトの変換や加工が簡単に行えるようになります。

基本構文

Object.fromEntries(iterable)
  • iterableとは
    配列やMapなどの反復可能オブジェクト。各要素は [key, value] 形式の配列である必要があります。

戻り値:新しいオブジェクト

使用例1:配列からオブジェクトを作成

const entries = [['name', 'Alice'], ['age', 25], ['city', 'Tokyo']]  
const obj = Object.fromEntries(entries)  
console.log(obj)  
// 出力: { name: 'Alice', age: 25, city: 'Tokyo' }

この例では、2要素の配列を複数集めた配列 entriesObject.fromEntries() に渡しています。
各要素は [key, value] の形になっており、メソッドはこれを基に新しいオブジェクトを生成します。
結果として、nameagecity のプロパティを持つオブジェクトが作成されます。

使用例2:Mapからオブジェクトを作成

const map = new Map()  
map.set('id', 1)  
map.set('role', 'admin')  

const obj = Object.fromEntries(map)  
console.log(obj)  
// 出力: { id: 1, role: 'admin' }

Mapオブジェクトも反復可能で [key, value] の形式を返すため、Object.fromEntries() に直接渡せます。
この例では idrole の2つのエントリを持つMapからオブジェクトを作成しています。
Mapの順序は保持されるため、順番通りにプロパティが作られます。

使用例3:オブジェクトのフィルタリングに応用

const user = { name: 'Bob', age: 30, city: 'Osaka' }  

const filtered = Object.fromEntries(  
  Object.entries(user).filter(([key, value]) => key !== 'age')  
)  

console.log(filtered)  
// 出力: { name: 'Bob', city: 'Osaka' }

Object.entries() でオブジェクトを [key, value] 配列に変換し、filter を使って条件に合わない要素を除外しています。
ここでは age プロパティを除外して新しいオブジェクトを作成しています。
Object.fromEntries() と組み合わせることで、オブジェクトのフィルタリングや加工が簡単に行えます。

使用例4 : 配列要素 + 番号のペアをつくる

const textArray = ['a', 'b', 'c', 'd', 'e', 'f', 'g'];
const textNumArray = Object.fromEntries(textArray.map((a, b) => [a, b]));
console.log(textNumArray);

// 出力: { a: 0, b: 1, c: 2, d: 3, e: 4, f: 5, g: 6 }

配列の要素をキー、インデックスを値としてオブジェクトに変換しています。
map[要素, インデックス] の配列を作成し、それを Object.fromEntries() に渡すことで、文字列の配列を番号付きオブジェクトに簡単に変換可能です。
この手法は、キーと値のペアを動的に生成したい場合に便利です。

注意点・エラー

1. 要素が [key, value] の形式でない場合

  • 例: [1, 2, 3] のような配列を渡すとエラー
  • 代替案: 配列を [key, value] の形に整形してから渡す

2. 非反復オブジェクトを渡す場合

  • 例: Object.fromEntries(123) はエラー
  • 代替案: Object.entries(obj) で配列に変換してから渡す

3. キーが重複する場合

  • 後の値が優先される
  • 代替案: 必要に応じて reduce などで事前に重複を処理する
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?