Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.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 为什么我的排序算法排序不正确?_Javascript_Arrays_Algorithm_Sorting - Fatal编程技术网

Javascript 为什么我的排序算法排序不正确?

Javascript 为什么我的排序算法排序不正确?,javascript,arrays,algorithm,sorting,Javascript,Arrays,Algorithm,Sorting,在我发布的一个问题的最佳答案中,我被赋予了排序功能。它对示例数据起作用,但对我的实际数据似乎不起作用,我也不知道为什么 我的数据可以在这里看到: 它是这样一个对象的对象: “蒙大拿”:{ “上级”:[ “马萨诸塞州”, “俄克拉荷马州”, “新墨西哥州” ], “下级”:[ “北卡罗来纳州” ] } 它用于指示排序功能。在这里,Montana在列表中的排名必须高于North Carolina。但是下面是马萨诸塞州、俄克拉何马州和新墨西哥州(顺便说一句,与地理无关) 为避免混淆,请注意: 这与

在我发布的一个问题的最佳答案中,我被赋予了排序功能。它对示例数据起作用,但对我的实际数据似乎不起作用,我也不知道为什么

我的数据可以在这里看到:

它是这样一个对象的对象:

“蒙大拿”:{
“上级”:[
“马萨诸塞州”,
“俄克拉荷马州”,
“新墨西哥州”
],
“下级”:[
“北卡罗来纳州”
]
}
它用于指示排序功能。在这里,
Montana
在列表中的排名必须高于
North Carolina
。但是下面是马萨诸塞州、俄克拉何马州和新墨西哥州(顺便说一句,与地理无关)

为避免混淆,请注意:
  • 这与对象关键点的顺序无关
但是排序并没有被精确地遵循(尽管大部分是遵循的)。例如,
州['North Carolina'].superiors.includes('ohoi')==true
,那么为什么
'ohoi'
列在
'North Carolina'
下面呢

fetch('https://api.npoint.io/7571e85ef470a2a7f189')
.then(data=>data.json())
.然后(状态=>{
函数mySort(arr){
常量分数=数组(arr.length).fill(0);
for(设i=0;i[分数[i],val])
.sort((a,b)=>a[0]-b[0])
.map(pair=>pair[1]);
}
常量名称=Object.key(状态);
log(mySort(names));
/*
[
“田纳西州”、“俄克拉荷马州”、“阿拉斯加”,
“威斯康星州”、“阿肯色州”、“纽约州”,
“内华达州”、“蒙大拿州”、“乔治亚州”,
“马萨诸塞州”、“夏威夷州”、“康涅狄格州”,
“加利福尼亚州”、“堪萨斯州”、“犹他州”,
“北达科他州”、“新墨西哥州”、“内布拉斯加州”,
“宾夕法尼亚州”、“路易斯安那州”、“新泽西州”,
“亚利桑那州”、“科罗拉多州”、“马里兰州”,
“俄勒冈州”、“密苏里州”、“弗吉尼亚州”,
“罗德岛州”、“密西西比州”、“南卡罗来纳州”,
伊利诺斯州、德克萨斯州、佛罗里达州、,
“华盛顿”、“哥伦比亚特区”、“肯塔基州”,
“明尼苏达州”、“爱荷华州”、“阿拉巴马州”,
“新罕布什尔州”、“爱达荷州”、“南达科他州”,
“印第安纳州”、“密歇根州”、“北卡罗来纳州”,
“俄亥俄州”
]
*/
//州['North Carolina']。上级。包括('Ohio')==true
//那么为什么“俄亥俄州”列在“北卡罗来纳州”下面呢?

});您只有一个not not a(并非所有州都在其
上级
/
下级
列表中列出所有其他州),因此您的分数计算不起作用。各州最终的得分取决于它们被提及的频率,而不是它们的相对顺序。您需要实现一个算法。

您只有一个NOTA(并非所有州都列出其
上级
/
下级
列表中的所有其他州),因此您的分数计算不起作用。各州最终的得分取决于它们被提及的频率,而不是它们的相对顺序。您需要实现一个算法。

您的数据不包含矛盾,但肯定不能正确列出所有内容


例子:爱荷华州-俄克拉荷马州的一对。俄克拉何马州被列为优于爱荷华州,但爱荷华州并未被列为低于俄克拉何马州。

您的数据没有矛盾之处,但肯定没有正确列出所有内容


例子:爱荷华州-俄克拉荷马州的一对。奥克拉荷马被列为优于爱荷华,但爱荷华并没有被列为不如奥克拉荷马。< / P>排序函数不考虑密钥的顺序。我知道在这里研究我的代码中的排序函数可能不是一件愉快的事,但如果您遵循我的第一个链接,作者会很好地描述它的工作原理。ES6保证键顺序保持为插入顺序,而ES5没有。因为我回复的注释被删除,我想说,作为参考,他们误解了我的问题,认为这与对象键的顺序有关。澄清一下,事实并非如此。我不是按对象键顺序排序。问题中描述了我的排序。您的
sort
呼叫没有问题。我猜你的分数计算并不像你期望的那样有效。你检查了它的输出吗?期望的结果是什么?排序函数不考虑键的顺序。我知道在这里研究我的代码中的排序函数可能不是一件愉快的事,但如果您遵循我的第一个链接,作者会很好地描述它的工作原理。ES6保证键顺序保持为插入顺序,而ES5没有。因为我回复的注释被删除,我想说,作为参考,他们误解了我的问题,认为这与对象键的顺序有关。澄清一下,事实并非如此。我不是按对象键顺序排序。问题中描述了我的排序。您的
sort
呼叫没有问题。我猜你的分数计算并不像你期望的那样有效。您是否检查了其输出?预期结果是什么?是否更准确地说,除了他们的相对顺序之外,他们的分数还受其他人的
上级
/
下级
列表中这两种频率的影响?我在想,如果数据覆盖更多的情况,它会更准确,如果它有100%的覆盖率,排序将是完美的?我希望我能找到一个JavaScript“拓扑排序”可以工作。更新:我在这里找到它:说t会更准确吗