Javascript 从数组中获取三个最低值
假设我得到一个JSON对象,如下所示:Javascript 从数组中获取三个最低值,javascript,json,node.js,Javascript,Json,Node.js,假设我得到一个JSON对象,如下所示: {"27":[2300,2300,2700,2300,2300,2300,2500,2300,2700,2300,2300,2300,2700,2300,2700,2300,2300,2300,2300,1900,2700,2300,2300,2300]} 我想从这个数组中获取三个最低的值,并将其存储为另一个数组。我曾尝试过sort(),但它认为10000比1300低 问题:如何从上述JSON对象中获取三个最低值并将其存储为自己的数组 以下是我尝试对数组
{"27":[2300,2300,2700,2300,2300,2300,2500,2300,2700,2300,2300,2300,2700,2300,2700,2300,2300,2300,2300,1900,2700,2300,2300,2300]}
我想从这个数组中获取三个最低的值,并将其存储为另一个数组。我曾尝试过sort()
,但它认为10000比1300低
问题:如何从上述JSON对象中获取三个最低值并将其存储为自己的数组
以下是我尝试对数组进行排序的方式:
-prices[searchLog.PriceSearchId].sort();
试试这个
var价格={
"27": [2300, 2300, 2700, 2300, 2300, 2300, 2500, 2300, 2700, 2300, 2300, 2300, 2700, 2300, 2700, 2300, 2300, 2300, 2300, 1900, 2700, 2300, 2300, 2300]
};
var leastThree=价格[“27”].排序(函数(a,b){
返回a-b;
}).切片(0,3);
控制台日志(至少三个)代码>由于您需要固定数量的最低值,因此不需要使用时间复杂度最多为O(N*log N)
的sort()
以下问题的复杂性是O(N)
var价格={
"27": [2300, 2300, 2700, 2300, 2300, 2300, 2500, 2300, 2700, 2300, 2300, 2300, 2700, 2300, 2700, 2300, 2300, 2300, 2300, 1900, 2700, 2300, 2300, 2300]
};
var arr=价格['27'];
var lowest=新数组(3).fill(Number.MAX\u SAFE\u INTEGER);
对于(变量i=arr.length;--i>=0;){
var x=arr[i];
//根据需要更新“最低”数组
对于(var j=0;j<最小长度;j++){
如果(x<最低[j]){
最低拼接(j,0,x);
lower.pop();
打破
}
}
}
控制台日志(最低)代码>您的排序不正确,但由于您没有发布代码,我们无法判断问题出在哪里?使用您自己的回调函数进行排序-ES2015+将是array.sort((a,b)=>a-b).slice(0,3)
请发布您的代码您想要最低的三个唯一值([1900,2300,2500])还是最低的三个值([1900,2300,2300])?