Javascript 使用sortBy的Lodash链接会在香草排序工作时产生错误
鉴于此:Javascript 使用sortBy的Lodash链接会在香草排序工作时产生错误,javascript,functional-programming,underscore.js,lodash,Javascript,Functional Programming,Underscore.js,Lodash,鉴于此: 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 und
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}]
有什么好处?我们是否不保证
sortBy
将在map
之后运行?还是我在这里遗漏了一些真正明显的东西?lodash使用的分类器功能只有一个参数:
尽管直接指定属性更好:
let sorter = 'property';
Lodash的
sortBy
函数接受作为排序依据的迭代对象作为第二个参数,并且不接受与本机sort()函数相同的排序函数模式。您只需将以下内容放入要排序的键的字符串中:
_.chain(nums).map(mapper).sortBy('property').value()
_.chain(nums).map(mapper).sortBy((o) => o.property).value()
或传入指向要排序的属性的函数:
_.chain(nums).map(mapper).sortBy('property').value()
_.chain(nums).map(mapper).sortBy((o) => o.property).value()