2017-01-26 4 views
-1

非構造化配列をJavascriptでオブジェクトに変換するより良い方法はありますか?Javascript - 配列をオブジェクトに分解する

axios APIライブラリを使用しています。複数のクエリを同時に実行すると、4-5 API responsesの配列が返されます。私はそれらをオブジェクトにラップし、別の関数に渡したいと思います。多分1ライナーがありますか?これは本当に大したことではありませんが、私はアプリケーション全体を通してこれらの束を持っています。

const [foo, bar, baz] = [1, 2, 3] 
const obj = { 
    foo, 
    bar, 
    baz 
} 
console.log(obj) 
=> {foo: 1, bar: 2, baz: 3} 
+2

あなたはライブラリをせずに、それをお探しですか? Lodashでは '_.zipObject(['foo'、 'bar'、 'baz']、[1,2,3])'を実行できます。 – loganfsmyth

+0

ライブラリがなくてもかまいません。ネイティブJSの方法があると思っていましたが、それはまだかなりクールです、ありがとう! – inostia

+0

素晴らしいです。もう一度@loganfsmythに感謝します。もし誰かがネイティブなJSバージョンを知っていれば、私はそれを見るのが好きだろう – inostia

答えて

-1

実際にオブジェクトと小道具を手動で宣言するよりも、バニラのみの方法は実際にはありません。 LodashにはzipObjectメソッドがあります。

_.zipObject(['foo', 'bar', 'baz'], [1, 2, 3]) 
-2

JavaScriptには、あなたが望むものは何もありませんが、それをする機能は些細なことではありません。ここでLodashから_.zipObjectに基づくものです:golfedワンライナーとして

function zipObject(props, values) { 
 
    return props.reduce((object, prop, index) => { 
 
    object[prop] = values[index]; 
 
    return object; 
 
    }, {}); 
 
} 
 

 
console.log(zipObject(['foo', 'bar', 'baz'], [1, 2, 3]));

const zipObject = (ps, vs) => ps.reduce((o,p,i)=>(o[p]=vs[i],o),{}); 
関連する問題