https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/Array/sort
var numbers = [4, 2, 5, 1, 3];
numbers.sort(function(a, b) {
return a - b;
});
console.log(numbers); // [1, 2, 3, 4, 5]
1.让我们以码头为例。什么是a,什么是b?这些元素是数字数组吗?如果是,它们是如何选择的?
2.如果没有参数,.sort(function(){ return Math.random()-0.5; })- 随机数组改组的工作代码。Math.random()-0.5 - 随机数(-0.5; 0.5]。按0、按0.1等排序有什么逻辑意义(按id排序,比如按年龄、按数字排序不清楚)?
2个参数被传递给参数函数:
a和b。a- 数组的第 i 个元素,b- i-th + 1。也就是说,就好像你在一个循环中遍历数组,这个循环
for的主体看起来像这样:然后引用:
如果我正确理解了您的(第二个)问题,那么您不清楚为什么使用一些零、一、更多和更少进行排序。
答案在上面的引用中。例如,如果排序函数看起来像
然后它总是会返回 -123(不是很实用和功能,纯粹例如),它小于零,因此“排序会将 a 置于比 b 低的索引处,即 a 先出现”。
按0、按0.1等排序有什么逻辑意义(按id排序,比如按年龄、按数字排序不清楚)?
意思是它
#random()-0.5会不断地给出随机值,而这些值要么是负数,要么是正数,要么等于零。正是这 3 种情况正是洗牌阵列所需要的。小于零的数字会掉出 - a 会比 b 早,会掉出更多 - 他们会改变位置,等于零的数字会掉出 - 一切都将保持原样(除了引用中描述的情况以上)。ab这些是数组的元素numbers。可以以任何方式选择它们。由于任何排序算法都涉及到两个元素的比较,因此您只需要指定一个规则来比较数组的任意两个元素。他们有什么索引并不重要。你的链接说:
也就是说,就
Math.random() - 0.5您而言,您将获得一些价值。如果该值为 0.1 或 0.7,则不再重要,因为在这两种情况下它都大于 0。但是,您的链接再次说明以下内容:
如果目标是以随机顺序对元素进行排序,则不会发生任何不好的事情,但如果需要某种棘手的算法,那么仍然应该考虑这一点。