Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/439.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用sortBy的Lodash链接会在香草排序工作时产生错误_Javascript_Functional Programming_Underscore.js_Lodash - Fatal编程技术网

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()