簡體   English   中英

使用 Lodash 從鍵值對數組中創建對象

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM