此问题已在此处有答案:
How does Javascript's sort() work?(8个回答)
12小时前关闭。
我正在一个开源项目中将一个array utilities
文件从js转换为typescript。转换大多数函数都很容易,但我不明白这个函数在做什么。
/**
* sort array by numeric by numeric property values
* of object entries. null entries are treated as 0.
* array entries must be objects.
* @param {object[]} arr
* @param {string} prop - numeric property to sort on.
*/
export const propSort = (arr,prop) => {
arr.sort( (a,b)=>{
return ( a[prop] || 0 ) - ( b[prop] || 0 );
});
}
我有一个关于函数应该做什么的描述,就像函数上面列出的那样。但我不懂语法。显然prop应该是一个字符串。但如果是这样的话,a,b到底是什么?如何使用字符串从数组中获取值?把这个函数转换成 typescript 有什么缺陷吗?
1条答案
按热度按时间20jt8wwn1#
这个函数本质上是数组的
.sort()
方法的 Package 器。如果向.sort()
传递一个回调函数,它将把正在进行排序比较的两个元素传递回该回调函数。然后,回调函数返回一个值,以确定两个元素中的哪一个应该首先出现,方法是返回正值(a
在b
之后)、负值(a
在b
之前)或零(它们相等,它们的相对顺序无关紧要)。propSort()
函数只运行.sort()
并返回结果,但传递给.sort()
一个回调函数。回调函数的思想是,arr
的每个元素都是一个对象,并且您希望根据每个对象所具有的属性对每个对象进行排序。