在JS数组中搜索,显示最稀有和最原始项目的位置



我有这个数组。我知道如何搜索值。

但是我在这里需要的是不同的东西,我不知道该怎么做。我不知道从哪里开始。

当前事件0000000010。

我需要数组中最稀有的六个数字在从最小事件编号到最高事件编号 (10( 的最后一个位置。 举个例子:数字 40 很少出现。在事件 8 和事件 5 中。因此,最后一个位置将在事件 8 中。但我在这里只需要一个数字,这是六个数字之一,显示最稀有。

我最常需要六个数字。

"results": 
[
{event: "0000000010", draw: [16,37,2,24,48,41]},
{event: "0000000009", draw: [49,1,10,17,41,23]},
{event: "0000000008", draw: [40,11,16,47,1,33]},
{event: "0000000007", draw: [9,32,27,41,14,4]},
{event: "0000000006", draw: [29,26,44,46,19,41]},
{event: "0000000005", draw: [31,40,10,13,6,27]},
{event: "0000000004", draw: [5,38,30,1,15,10]},
{event: "0000000003", draw: [39,48,9,2,34,1]},
{event: "0000000002", draw: [6,23,39,31,16,14]},
{event: "0000000001", draw: [14,16,13,15,2,25]},
{event: "0000000000", draw: [18,22,13,12,19,47]}
]

您可以使用 number=> 计数映射:

var events=[
{event: "0000000010", draw: [16,37,2,24,48,41]},
{event: "0000000009", draw: [49,1,10,17,41,23]},
{event: "0000000008", draw: [40,11,16,47,1,33]},
{event: "0000000007", draw: [9,32,27,41,14,4]},
{event: "0000000006", draw: [29,26,44,46,19,41]},
{event: "0000000005", draw: [31,40,10,13,6,27]},
{event: "0000000004", draw: [5,38,30,1,15,10]},
{event: "0000000003", draw: [39,48,9,2,34,1]},
{event: "0000000002", draw: [6,23,39,31,16,14]},
{event: "0000000001", draw: [14,16,13,15,2,25]},
{event: "0000000000", draw: [18,22,13,12,19,47]}
];

//create hash map

var hash={};

events.forEach(function(event){

event.draw.forEach(function(number){
hash[number]={number,value:(hash[number]||{value:0}).value+1};
});
});

//sort

var sorted=Object.values(hash).sort((a,b)=>a.value-b.value).map(el=>el.number);
console.log(sorted);

最新更新