ループを使用せずにJavascriptで配列をオブジェクトに変換する方法

次の配列を変換したいです。

['a', 'b', 'c']

次のオブジェクトに

{a: 'a', b: 'b', c: 'c'}

もちろん、ループを使わずにそれを行うにはどうすればよいですか?

1
nl ru de
とにかくスプレッド演算子が配列をループしている
追加された 著者 Below the Radar,
あなたはある種のループを使わなければなりません。配列メソッドに組み込まれていてもループを使う
追加された 著者 charlietfl,
あなたのループを選んでください…for、for、for、それぞれ、map、reduce、reduceRightなど。使用したいループを選択すれば、複雑なことは何もありません。
追加された 著者 charlietfl,
{... ['a'、 'b'、 'c']} の結果は {0: "a"、1: "b"、2: "c"} 。 map、reduce、または同様のループがないと実行できません。
追加された 著者 Slai,
@charlietflもっと短いものを探しています。
追加された 著者 loveTrumpsHate,

4 答え

Use reduce

<div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false"> <div class="snippet-code">

var arr = ['a', 'b', 'c'];


var obj = arr.reduce(function(obj, value) {
     obj[value] = value;
     return obj
}, {});
console.log(obj)
</div> </div>
1
追加された

Object.assign

<div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false"> <div class="snippet-code">

var array = ['a', 'b', 'c'],
    object = Object.assign(...array.map(v => ({ [v]: v })));
    
console.log(object);
</div> </div>
1
追加された
なぜ地図ではないのですか?
追加された 著者 Nina Scholz,
あなたはいくつかの段階で変換が必要です...
追加された 著者 Nina Scholz,
地図を使わずにこれを行う方法は?
追加された 著者 loveTrumpsHate,
マップは問題ありませんが、スプレッド演算子を使用した方が短いものかもしれません。
追加された 著者 loveTrumpsHate,

望ましい結果を得るために Array#reduce を使うことができます。

<div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false"> <div class="snippet-code">

const a = ['a', 'b', 'c'];
const o = a.reduce((s, a) => {
   s[a] = a;
   return s;
}, {});

console.log(o);
</div> </div>
1
追加された

object.assign()で問題が解決する可能性があります。

これが一例です。

var array = ['a', 'b', 'c']; 

Object.assign( {}, array);

// {0: "a", 1: "b", 2: "c"}

新しいjsonインデックスは配列と同じになります。

1
追加された
JavaScript - 日本のコミュニティ
JavaScript - 日本のコミュニティ
2 参加者の

日本人コミュニティのjavascript