1. ホーム
  2. javascript

Javascript では、辞書の内包、またはオブジェクトの `map` が使用されます。

2023-10-10 01:50:51

質問

Javascriptでリストからいくつかのオブジェクトを生成する必要があります。Pythonでは、私はこれを書くでしょう。

{key_maker(x): val_maker(x) for x in a_list}

別の言い方をすれば、次のようなものが存在するかということです。 jQuery.map() のような、オブジェクトを集約するようなものはあるのでしょうか?以下は私の推測です(うまくいきません)。

var result = {}
$.map(a_list, function(x) {
    $.extend(result, {key_maker(x): val_maker(x)})
})

どのように解決するのですか?

仮定の話 a_list が Array であるとすると、最も近いのは .reduce() .

var result = a_list.reduce(function(obj, x) {
    obj[key_maker(x)] = val_maker(x);
    return obj;
}, {});

配列内包はJavaScriptの将来のバージョンで登場する可能性が高いです。


ES5非対応の実装にパッチをあてるには 互換性パッチ .


もし a_list が配列でなく、単なるオブジェクトである場合 Object.keys() を使って同じ操作を行うことができます。

var result = Object.keys(a_list).reduce(function(obj, x) {
    obj[key_maker(a_list[x])] = val_maker(a_list[x]);
    return obj;
}, {});