2015-10-12 179 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('-'))