gpt4 book ai didi

Javascript 从关联数组中查找最小数字(冒泡排序方法)

转载 作者:行者123 更新时间:2023-11-28 11:54:09 24 4
gpt4 key购买 nike

所以我尝试将冒泡排序技术应用于关联数组。

我尝试的是制作一个普通数组,然后应用冒泡排序。这有效,所以现在我尝试对我的关联数组执行相同的操作,但我不明白为什么它不起作用,有人可以解释并告诉我如何执行此操作吗? p>

普通数组冒泡排序代码: <-- 这个有效

var numbers= new Array()

numbers[0] = 22;
numbers[1] = 3;
numbers[2] = 65;
numbers[3] = 75;
numbers[4] = 500;
numbers[5] = 2;
numbers[6] = 44;

for(var i=0; i<numbers.length; i++)
{
if(numbers[i] < numbers[i+1])
{
var tempGetal = numbers[i];
numbers[i] = numbers[i+1];
numbers[i+1] = tempGetal;
}
}

console.log("Smallest number from array is " + tempGetal);

关联数组冒泡排序代码: <-- 不起作用

var celsius= new Array()

celsius["Monday"] = 22;
celsius["Tuesday"] = 3;
celsius["Wednesday"] = 65;
celsius["Thursday"] = 75;
celsius["Friday"] = 1;
celsius["Saterday"] = 2;
celsius["Sunday"] = 44;

for(var temp in celsius)
{
if(celsius[temp] < celsius[temp+1])
{
var tempGetal = celsius[temp];
celsius[temp] = celsius[temp+1];
celsius[temp+1] = tempGetal;
}
}

console.log("Smallest number from this array is " + tempGetal[temp]);

谁能告诉我我尝试应用的方法是否可行?

提前致谢!

最佳答案

您的尝试失败的原因有多种,但您的假设存在一个根本缺陷:对象中属性的顺序未定义,因此您不应尝试重新排列它们。

确实没有理由为此使用排序。只需遍历该对象一次并找到最低值:

var min = Infinity;
for(var day in celsius) {
if(celsius[day] < min) {
min = celsius[day];
}
}
console.log(min);

更奇特的解决方案:

var celsius = [];

celsius["Monday"] = 22;
celsius["Tuesday"] = 3;
celsius["Wednesday"] = 65;
celsius["Thursday"] = 75;
celsius["Friday"] = 1;
celsius["Saterday"] = 2;
celsius["Sunday"] = 44;

var min = Object
.keys(celsius)
.map(function(key) {
return celsius[key];
})
.reduce(function(last, next) {
return last < next ? last : next;
}, Infinity);

console.log(min);

您的方法的其他问题:

  • Javascript 没有关联数组。通常,您不应创建数组并为其分配命名属性(这就是对象的用途)。
  • 如果使用 for(var temp in celsius) 迭代对象,temp 将是属性名称,而不是温度或数值索引。
  • 考虑到上一条,如果 temp 的值为 “Monday”,则 celsius[temp + 1] = tempGetal 将将 tempGetal 分配给属性 Monday1

关于Javascript 从关联数组中查找最小数字(冒泡排序方法),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28961750/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com