如何在JavaScript/Lodash中将字符串数组转换为键值对象

3

给定数组:

var arr = [ "one", "two", "three" ];

请问将其转换为最简洁的方式是什么:

{ "one": true, "two": true, "three": true }

我尝试过以下方法,但我想应该有更好的解决办法。
 _.zipObject(arr || {}, _.fill([], true, 0, arr.length))

@JosephtheDreamer 是的,我尝试过:_.zipObject(sets.Seen || {}, _.fill([], true, 0, sets.Seen.length)) - Calin Leafshade
最好的方法是将其包含在帖子中。 - Joseph
@JosephtheDreamer修改了问题 - Calin Leafshade
4个回答

13
var obj = arr.reduce(function(o, v) { return o[v] = true, o; }, {});

2
这是我第一次看到在return语句中使用逗号运算符。有趣的问题。https://dev59.com/O2kv5IYBdhLWcg3w4kt2 - azium

0

var array = ["one", "two", "three"];
var myObject = new Object();

for (i = 0; i < array.length; i++) {
    myObject[array[i]] = true;
}

console.log(myObject);


不要使用new Object(),而是使用对象字面量{} - Edwin Reynoso

0

使用 lodash 库:

const arr = ['one', 'two', 'three'];

_.mapValues(_.keyBy(arr), () => true);

0

一个简单的方法可以像这样:

function toObject(arr) {
   var rv = {};
   for (var i = 0; i < arr.length; ++i)
   rv[i] = true;
   return rv;
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接