javascript - Javascript比较奇怪
问题描述
我遇到了比较的问题。结果假设为 11,因为索引 11 的产品成本低于索引 18 的产品成本。但不知何故,结果是 18
var scores = [60, 50, 60, 58, 54, 54, 58, 50, 52, 54, 48, 69, 34, 55, 51, 52, 44, 51, 69, 64, 66, 55, 52, 61, 46, 31, 57, 52, 44, 18,
41, 53, 55, 61, 51, 44];
var costs = [.25, .27, .25, .25, .25, .25, .33, .31, .25, .29, .27, .22, .31, .25, .25, .33, .21, .25, .25, .25, .28, .25, .24, .22, .20, .25, .30, .25, .24, .25,
.25, .25, .27, .25, .26, .29];
//TOTAL, HIGHEST, INDEX OF THE HIGHEST
function index(array,arrayCost){
var maximum=Math.max(...array);
var arrayIndex=[];
for(var i=0;i<array.length;i++){
if(array[i]==maximum){
arrayIndex.push(i)
}
}
var minimum=arrayCost[arrayIndex[0]];//0.22
for(var i=0;i<arrayIndex.length;i++){
if(arrayCost[arrayIndex[i]]<=minimum){//0.25>=0.22
minimum=arrayIndex[i];
}
}
return minimum;
}
解决方案
在您的第二个if
中,您重新分配minimum
该arrayIndex[i]
值11
,因此在下一个循环中,最小值将小于11
并且arrayCost[arrayIndex[i]]
将小于11
。您可以创建另一个存储该index
值的变量。
function index(array, arrayCost) {
var maximum = Math.max(...array);
var arrayIndex = [];
for (var i = 0; i < array.length; i++) {
if (array[i] == maximum) {
arrayIndex.push(i);
}
}
var resultIndex = arrayIndex[0];
var minimumCost = arrayCost[arrayIndex[0]]; //0.22
for (var i = 0; i < arrayIndex.length; i++) {
if (arrayCost[arrayIndex[i]] <= minimumCost) {
//0.25>=0.22
minimumCost = arrayCost[arrayIndex[i]];
resultIndex = arrayIndex[i];
}
}
return resultIndex;
}
推荐阅读
- micropython - Flash microbit 嵌入类 .py 文件
- python - 去噪非常嘈杂的大示波器数据
- macos - 如何使用applescript计算卷大小列表?
- android - Android新闻应用程序UI在gridview顶部显示空白?
- vba - Outlook 2016 VBA 将附件从文件夹保存到特定位置
- javascript - 在特定的 Javascript 运行后执行代码
- cmake - 使用 CMake 将 Qt4 DLL 复制到 Windows 上的可执行目录
- swift - 在完成块中推断通用类型
- ruby-on-rails - 非绑定形式的 Coccon Gem 嵌套属性
- nstableview - 如何使滚动视图向上或向下步进等于 NSTableView 中表格单元格的高度?