我使用lodash从数组创建对象但结果不是预期的.. 这是代码:
var _ = requre('lodash')
var data = [ [ 'creds', 'ZHRyYWhlZMMKDWhzYW5EaG1hZDE=' ],[ 'loggedIn', true ] ];
var result = _.zipObject(data);
现在的结果是:
{creds,ZHRyYWhlZMMKDWhzYW5EaG1hZDE=: undefined, loggedIn,true: undefined}
但我需要的是:
{'creds':'ZHRyYWhlZMMKDWhzYW5EaG1hZDE=', 'loggedIn':true}
请帮助: - )
答案 0 :(得分:7)
使用lodash' _.fromPairs
:
var result = _.fromPairs(data);
答案 1 :(得分:1)
您也可以使用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);
&#13;
答案 2 :(得分:1)
你很亲密!唯一的区别是_.zipObject
需要两个不同的参数(一个用于键,一个用于值),而不是参数数组。
但您可以使用.apply
方法_.zipObject
来执行此操作:
_.zipObject.apply(null, data);
// Object { creds: "loggedIn", "ZHRyYWhlZMMKDWhzYW5EaG1hZDE=": true }
答案 3 :(得分:1)
您可以使用array#reduce
从阵列中获取对象。
var data = [ [ 'creds', 'ZHRyYWhlZMMKDWhzYW5EaG1hZDE=' ],[ 'loggedIn', true ] ];
var obj = data.reduce((o, [k,v]) => (o[k] = v, o), {});
console.log(obj);
&#13;