コンテンツにスキップ

JavaScript/Set/prototype/values

出典: フリー教科書『ウィキブックス(Wikibooks)』

Set.prototype.values()

[編集]

Set.prototype.values() は、Setオブジェクトの値を反復処理するためのイテレータを返すメソッドです。

構文

[編集]
set.values()

返り値

[編集]

Setオブジェクトの値を順次返す Iterator オブジェクト

説明

[編集]
  • Setオブジェクトの各値を順番に取得できるイテレータを生成
  • 元のSetオブジェクトを変更せずに反復処理が可能
  • ECMAScript 2015 (ES6) で導入されたメソッド
  • Setでは、キーと値が同じであるため、values()メソッドはkeys()メソッドと同等の動作をします

使用例

[編集]

基本的な使用

[編集]
const set = new Set([1, 2, 3]);
const iterator = set.values();

console.log(iterator.next().value); // 1
console.log(iterator.next().value); // 2
console.log(iterator.next().value); // 3

for...of ループでの使用

[編集]
const set = new Set(['apple', 'banana', 'orange']);

for (const value of set.values()) {
    console.log(value); // 'apple', 'banana', 'orange' を順に出力
}
const set = new Set([10, 20, 30]);
const values = [...set.values()];
console.log(values); // [10, 20, 30]

特殊な動作

[編集]

重複値の排除

[編集]
const set = new Set([1, 2, 2, 3, 3, 4]);
console.log([...set.values()]); // [1, 2, 3, 4]
// 重複した値は自動的に排除されます

異なる型の値

[編集]
const set = new Set([
    42, 
    'text', 
    true, 
    { key: 'value' }, 
    [1, 2, 3]
]);

for (const value of set.values()) {
    console.log(typeof value);
}
// 出力:
// 'number'
// 'string'
// 'boolean'
// 'object'
// 'object'

注意点

[編集]
  • イテレータは一度しか使用できません
  • 新しい配列を生成するわけではありません
  • 空のSetに対しては空のイテレータを返します
  • Setのvalues()メソッドはkeys()メソッドと同じ動作をします

ブラウザ互換性

[編集]
  • モダンブラウザで広くサポート
  • Internet Explorer では利用不可
  • Node.js 4.0.0 以降でサポート

関連メソッド

[編集]

仕様

[編集]
  • ECMAScript 2015 (ECMA-262)

高度な使用例

[編集]

配列からユニークな値を取得

[編集]
const array = [1, 2, 2, 3, 4, 4, 5];
const uniqueValues = [...new Set(array).values()];
console.log(uniqueValues); // [1, 2, 3, 4, 5]

値のフィルタリング

[編集]
const set = new Set([1, 2, 3, 4, 5, 6]);
const evenValues = [...set.values()].filter(value => value % 2 === 0);
console.log(evenValues); // [2, 4, 6]