[英]Make object from an array of key-value pairs using Lodash
我正在使用 Lodash 從數組創建一個對象,但結果不是我所期望的。 這是代碼:
var _ = require('lodash');
var data = [
[ 'creds', 'ZHRyYWhlZMMKDWhzYW5EaG1hZDE=' ],
[ 'loggedIn', true ],
];
var result = _.zipObject(data);
現在的結果是:
{creds,ZHRyYWhlZMMKDWhzYW5EaG1hZDE=: undefined, loggedIn,true: undefined}
但我需要的是:
{'creds':'ZHRyYWhlZMMKDWhzYW5EaG1hZDE=', 'loggedIn':true}
使用 lodash 的_.fromPairs
:
var result = _.fromPairs(data);
您還可以使用reduce
result = data.reduce((a, b, i) => (a = i == 1 ? {
[a[0]]: a[1]
} : a, a[b[0]] = b[1], a));
演示
var data = [ ['creds', 'ZHRyYWhlZMMKDWhzYW5EaG1hZDE='], ['loggedIn', true] ]; result = data.reduce((a, b, i) => (a = i == 1 ? { [a[0]]: a[1] } : a, a[b[0]] = b[1], a)); console.log(result);
你很近! 唯一的區別是_.zipObject
需要兩個不同的參數(一個用於鍵,一個用於值),而不是一組參數。
但是你應該能夠通過在_.zipObject
方法上使用.apply
來做到這一點:
_.zipObject.apply(null, data);
// Object { creds: "loggedIn", "ZHRyYWhlZMMKDWhzYW5EaG1hZDE=": true }
您可以使用array#reduce
從數組中獲取對象。
var data = [ [ 'creds', 'ZHRyYWhlZMMKDWhzYW5EaG1hZDE=' ],[ 'loggedIn', true ] ]; var obj = data.reduce((o, [k,v]) => (o[k] = v, o), {}); console.log(obj);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.