2017-03-14 23 views
1

鑑於此:Lodash與sortBy鏈接會產生錯誤,而香草排序工作

let nums = [1,5,4] 
let sorter = (a,b) => a.property > b.property ? 1 : -1; 
let mapper = x => {return {property:x}} 

這將引發一個錯誤:雖然這並不

_.chain(nums).map(mapper).sortBy(sorter).value() 
// Uncaught TypeError: Cannot read property 'property' of undefined 

nums.map(mapper).sort(sorter) 
// [{"property":1},{"property":4},{"property":5}] 

是怎麼回事?我們不能保證會在map之後運行嗎?還是我錯過了一些真正明顯的東西?

回答

3

Lodash的sortBy函數接受作爲第二個參數來迭代排序,而不是接受與原生sort()函數相同的排序功能模式。您可以只需將鑰匙串中,你要作爲排序依據:

_.chain(nums).map(mapper).sortBy('property').value() 

或者傳遞指向要排序的屬性的函數:

_.chain(nums).map(mapper).sortBy((o) => o.property).value()