【发布时间】:2021-08-17 07:34:46
【问题描述】:
谁能解释这段代码中发生了什么?
问题
根据元素出现的次数对数组进行降序排序
样本输入:
let chocoArr= ["red", "blue", "green", "red"];
样本输出:
["red", "red", "blue", "green"]
代码
let chocoArr = ["red", "blue", "green", "red"];
const sortChocolateBasedOnCount = (chocolates) => {
let cho = chocolates.reduce(function(temp1, temp2) {
if (temp2 in temp1) {
temp1[temp2]++;
} else {
temp1[temp2] = 1;
}
return temp1;
}, {});
let Array = chocolates.sort((temp1, temp2) => {
if (cho[temp2] > cho[temp1]) {
return 1;
}
if (cho[temp2] < cho[temp1]) {
return -1;
}
if (temp1 > temp2) {
return 1;
}
if (temp1 < temp2) {
return -1;
}
});
chocolates = Array;
}
console.log(sortChocolateBasedOnCount(chocoArr));
【问题讨论】:
-
您还要求我们澄清什么?
-
是的,你没有从你的函数中返回任何东西,你正在覆盖
Array类! - 你也在对颜色名称进行排序,在你之前的问题中,你说你不想这样做 -
我的老师给了我这个代码作为这个问题的答案。但我不明白这段代码中发生了什么来对数组进行排序
-
这不是最好的代码...令人失望的老师。除了已经提到的问题,排序回调从不返回 0。
-
您的问题应该更加具体。这段代码真正解决了两个问题:计数出现次数,然后排序。您应该具体说明您不了解的内容。您是否在使用调试器单步执行代码时检查了变量?请注意,代码有几个问题,因此如果不列出代码编写者显然使用/拥有的所有不良做法和误解,它并不真正适合解释算法。简而言之:这个问题太宽泛了。展示我们的工作,并做到具体。
标签: javascript arrays sorting