计算Javascript中参数的最小值或最大值的条目数

计算Javascript中参数的最小值或最大值的条目数,javascript,arrays,json,object,Javascript,Arrays,Json,Object,我想计算JS中数组中最小值或最大值的出现次数,如果出现次数超过2,则从原始数组中删除元素(示例)。例如,我有以下对象: let data = [ {name: 'DataSet01', Severity:'5'}, {name: 'DataSet02', Severity:'3'}, {name: 'DataSet03', Severity:'2'}, {name: 'DataSet04', Severity:'2'}, {name: 'DataSet05

我想计算JS中数组中最小值或最大值的出现次数,如果出现次数超过2,则从原始数组中删除元素(示例)。例如,我有以下对象:

let data = [
    {name: 'DataSet01', Severity:'5'},
    {name: 'DataSet02', Severity:'3'},
    {name: 'DataSet03', Severity:'2'},
    {name: 'DataSet04', Severity:'2'},
    {name: 'DataSet05', Severity:'3'}
    {name: 'DataSet06', Severity:'2'}
];
在这里,严重性是关键,它的值“2”是所有项中的最小值,它发生了3次,我想从原始数组(数据)中删除所有严重性为2的项

所以更新后的对象应该如下所示:

let finaldata = [
    {name: 'DataSet01', Severity:'5'},
    {name: 'DataSet02', Severity:'3'},
    {name: 'DataSet05', Severity:'3'}
];
到目前为止,我尝试用过滤器来寻找最小的切片,但在这一个上并没有得到想要的结果。希望有人能在这方面帮助我。

  • 使用
    Math.max
    Math.min
    查找最大和最小服务器数

  • 然后使用“最大严重性”和“最小严重性”在
    数据中查找它们的出现情况

  • 如果这些值大于
    2
    ,则过滤
    数据

const
数据=[{name:“DataSet01”,严重性:“5”},{name:“DataSet02”,严重性:“3”},{name:“DataSet03”,严重性:“2”},{name:“DataSet04”,严重性:“2”},{name:“DataSet05”,严重性:“3”},{name:“DataSet06”,严重性:“2”},
maxSeverity=String(Math.max(…data.map((o)=>o.Severity)),
minSeverity=String(Math.min(…data.map((o)=>o.Severity)),
numMaxSeverity=data.filter((o)=>o.Severity==maxSeverity).length,
NUMMINSERVITY=data.filter((o)=>o.Severity==minSeverity).length;
让res=numMaxSeverity>2?data.filter((o)=>o.Severity!==maxSeverity):[…数据];
res=numMinSeverity>2?data.filter((o)=>o.Severity!==minSeverity):分辨率;

控制台日志(res)获取
最大值和最小值
,并使用
单循环
(代码优化)在数据数组中保留
严重性计数
;然后使用
filter()
方法获得所需的输出

const数据=[
{name:'DataSet01',严重性:'6'},
{name:'DataSet11',严重性:'6'},
{name:'DataSet10',严重性:'6'},
{name:'DataSet09',严重性:'5'},
{name:'DataSet02',严重性:'3'},
{name:'DataSet03',严重性:'2'},
{name:'DataSet04',严重性:'2'},
{name:'DataSet05',严重性:'3'},
{name:'DataSet06',严重性:'2'}
];
常量过滤器数据=(数据)=>{
设maxValue=minValue=parseInt(数据[0]。严重性);
const countMap=新映射();
用于(数据的常量对象){
const objSeverity=parseInt(对象严重性);
if(最大值<对象平均值){
maxValue=objSeverity;
}
如果(最小值>对象最小值){
minValue=objSeverity;
}
countMap.set(对象严重性,(countMap.get(对象严重性)??0)+1);
}
返回数据。筛选器(值=>{
const severity=parseInt(value.severity);
如果((严重性===maxValue | |严重性===minValue)
&&countMap.get(值.严重性)>2){
返回false;
}
返回true;
});
}
console.log(filterData(数据))和另一种方法:

const data=[{name:'DataSet01',严重性:'5'},{name:'DataSet02',严重性:'3'},{name:'DataSet03',严重性:'2'},{name:'DataSet04',严重性:'2'},{name:'DataSet05',严重性:'3'},{name:'DataSet06',严重性:'2'};
函数removeMinMax(arr,prop,n=1){
常量mm={m:[“min”,“max”].map(mima=>“”+Math[mima](…arr.map(d=>d[prop])),c:[0,0,0]};
arr.forEach(e=>mm.c[mm.m.indexOf(e[prop])+1]+);//计数发生次数
mm.flt=mm.m.filter((_,i)=>mm.c[i+1]>=n);//决定是否过滤掉它们
返回arr.filter(e=>mm.flt.indexOf(e[prop])