“_”是否有创建键=>值对象的快捷方式?

Does "_" have a shortcut for creating a key => value object?

我经常发现自己处于需要以下构造的情况:

function keyValuePair(key, value) {
  var obj = {};
  obj[key] = value;
  return obj;
};

当您需要创建一个动态确定其键的对象时,这非常方便:

var name = "someProperty";
var myObj = keyValue('prefix.' + name, 123);

例如,当您使用 MongoDB 查询时,通常就是这种情况。

是否可以用lodashunderscore达到相同的结果?

使用 ES6,您可以执行以下操作

var myObj = {[`prefix.${name}`]: 123};

看起来和感觉起来好多了。

不过,您暂时需要使用 Babel 或类似的框架将其转译为 ES5 代码。

关于underscore你可以做以下事情:

_.object(['key'], ['value'])

这会产生一个对象

{
  'key': 'value'
}

关于 _.object

的文档

如果您使用的是 lodash,set() 方法适用于此:

var myObj = _.set({}, 'prefix.name', 'foo');
console.log(myObj.prefix.name);
// → foo