lodash: 配列をオブジェクトにマッピングする 質問する

lodash: 配列をオブジェクトにマッピングする 質問する

これを実行する組み込みの lodash 関数はありますか?

var params = [
    { name: 'foo', input: 'bar' },
    { name: 'baz', input: 'zle' }
];

そしてこれを出力します:

var output = {
    foo: 'bar',
    baz: 'zle'
};

今は以下を使用していますArray.prototype.reduce():

function toHash(array, keyName, valueName) {
    return array.reduce(function(dictionary, next) {
        dictionary[next[keyName]] = next[valueName];
        return dictionary;
    }, {});
}

toHash(params, 'name', 'input');

lodash のショートカットがあるかどうか疑問に思っています。

ベストアンサー1

別の方法としてロダッシュ4.17.2

_.chain(params)
    .keyBy('name')
    .mapValues('input')
    .value();

または

_.mapValues(_.keyBy(params, 'name'), 'input')

または_.reduce

_.reduce(
    params,
    (acc, { name, input }) => ({ ...acc, [name]: input }),
    {}
)

おすすめ記事