Javascript 如何从json文件中获取最高的3个值

Javascript 如何从json文件中获取最高的3个值,javascript,node.js,arrays,json,Javascript,Node.js,Arrays,Json,所以我需要从一个数组中得到最高的3个值,虽然我不知道需要检查多少个值,因为这个数字会定期变化,我尝试运行这个循环,但它不起作用 numbers = new array(); numbers = (6,34,6623,22,754,2677,12) var num1 = 0 var num2 = 0 var num3 = 0 for (var i=0; i<numbers.length;i++) { if num1<numbers[i] { num1 = num

所以我需要从一个数组中得到最高的3个值,虽然我不知道需要检查多少个值,因为这个数字会定期变化,我尝试运行这个循环,但它不起作用

numbers = new array();
numbers = (6,34,6623,22,754,2677,12)
var num1 = 0
var num2 = 0
var num3 = 0
for (var i=0; i<numbers.length;i++) {
    if num1<numbers[i] {
        num1 = numbers[i]
    } else if num2<numbers[i] {
         num2 = numbers[i]
      } else if num3<numbers[i] {
           num3 = numbers[i]
    }
}
numbers=新数组();
数字=(6,346623,227542677,12)
var num1=0
var num2=0
var num3=0

对于(var i=0;i按降序排序数组,然后按其索引获取所有3个元素:

let numbers = new Array(6,34,6623,22,754,2677,12);
numbers.sort(function(a, b){return b-a});

console.log(numbers[0], numbers[1], numbers[2]);

有一种更简单的方法可以实现这一点。 首先,在数组上运行
sort()
,然后选择最高的

const myArray = [7,4,99,10,55,1];
console.log(myArray.sort((a,b)=>b-a).slice(0, 3)) // [99, 55, 10]
只需按降序对数组排序,然后对前三个值进行切片。 注意:
.sort().reverse()
是按降序排序的最快方法。请参阅

函数getTopThree(arr){
//spread避免修改原始数组
返回[…arr].sort().reverse().slice(0,3);
}
getTopThree(数字);
每当更新或更改您的
numbers
数组时,请再次调用
getTopThree(numbers)

您可以对数组进行排序

var numbers = [1,65,8,98,689,12,33,2,3,789];
var topValues = [... numbers].sort((a,b) => b-a).slice(0,3); 

所有其他答案都提出了正确而快速的方法,即按降序对数组进行排序,并取前三个元素

如果您对代码不起作用的原因感兴趣:问题是,如果找到新的
max
值,您需要跟踪上一次找到的每个值。您需要将代码更改为以下内容:

const number=[6,346623,227542677,12]
设max=0;
设oneLowerToMax=0;
设twoLowerToMax=0;
for(设i=0;i最大值){
twoLowerToMax=一个LowerToMax;
oneLowerToMax=最大值;
max=数字[i];
}else if(数字[i]>oneLowerToMax){
twoLowerToMax=一个LowerToMax;
oneLowerToMax=数字[i];
}else if(数字[i]>twoLowerToMax){
twoLowerToMax=数字[i];
}
}

console.log(max,oneLowerToMax,twoolowertomax)//打印66232677754
按降序排序数组并选择前3个值数组周围需要方括号,而不是括号。非常感谢!