2015-10-12 273 views
1

LoDash有一个方法可以做与_.keys相反的方法,为一个数组赋值并为每个值分配一个任意字符串?像这样:Lodash是否与_.keys相反?

var list = ['a', 'b', 'c'] 

var object = _.✨unicornize✨ (list, '-') 

console.log (object) // expect {'a': '-', 'b': '-', 'c': '-'} 

LoDash是否有一个内置的要做到这一点?如果没有,那么这是一个优雅的方式?

+5

不完全是一个函数:'_.object(list.map(k => [k,' - ']))'。而在ES2015中:'list.reduce((acc,k)=>({... acc,[k]:' - '}),{});' – zerkms

+0

@zerkms哇,这很短。可悲的是,ES6/BabelJS不是一种选择,因此时间复杂性会非常糟糕。 –

+0

@SuperScript:“*时间复杂性不可能很好*” - 嗯,为什么? – Bergi

回答

1

这似乎很像code golf挑战:)

解决方案#1:

_.mapValues(_.invert(list), _.constant('-')) 

解决方案2:

_.zipObject(list, _.fill(new Array(list.length), '-')) 

解决方案3:

_.zipObject(_.map(list, function (v, k) { return [v, '-'] })) 
// or, if you would use arrow functions: 
_.zipObject(_.map(list, (v, k) => [v, '-'])) 
1

你可以做

_.mapValues(_.keyBy(list), _.constant('-'))