Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在数组中查找两个值,其中给定的数字介于_Javascript_Arrays - Fatal编程技术网

Javascript 在数组中查找两个值,其中给定的数字介于

Javascript 在数组中查找两个值,其中给定的数字介于,javascript,arrays,Javascript,Arrays,我有一个带有数字的数组,但它们可以是唯一的,并且数字会发生变化,但现在,让我们假设它是这样的: const arr = [200, 180, 150, 120, 80]; 我有一个数组中的平均数: const average = 146; 我需要一个函数来检查这个平均数需要在数组中的两个数之间,在这个例子中,在150和120之间,然后才显示一些东西,等等。我怎样才能做到这一点 我目前的进度,但这并没有提供我需要的输出: let array = [200, 180, 150, 120, 80]

我有一个带有数字的数组,但它们可以是唯一的,并且数字会发生变化,但现在,让我们假设它是这样的:

const arr = [200, 180, 150, 120, 80];
我有一个数组中的平均数:

const average = 146;
我需要一个函数来检查这个平均数需要在数组中的两个数之间,在这个例子中,在150和120之间,然后才显示一些东西,等等。我怎样才能做到这一点

我目前的进度,但这并没有提供我需要的输出:

let array = [200, 180, 150, 120, 80];

const sum = array.reduce(function(a, b){
    return a + b;
}, 0);

const average = sum / array.length; // 146

let check = (arr: any[], start: number, end: number, value: number) => (
    start <= end ?
    arr.filter((_, i) => i >= start && i <= end) :
    arr.filter((_, i) => i >= start || i <= end)
).includes(value);

console.log('check', check(array, 120, 150, average)); // 120 and 150 must be found in function as these values can't be hardcoded and will change
let数组=[20018015012080];
const sum=array.reduce(函数(a,b){
返回a+b;
}, 0);
const average=sum/array.length;//146
让我们检查=(arr:any[],开始:编号,结束:编号,值:编号)=>(
开始i>=开始&开始i>=开始| | i假设
  • 数组已排序
状况
  • 检查它是否小于数组中的当前元素,是否大于数组中的下一个元素
注意:如果数组未排序,可以执行
array.sort()

const arr=[200、180、150、120、80];
让总和=平均减少((acc,x)=>{
返回acc+x
}, 0)
设平均值=总和/阵列长度;
for(设i=0;iarr[i+1]){
log(“这里的标记“+(i+1)+”是“+avg+”的位置”);
}
}
假设
  • 数组已排序
状况
  • 检查它是否小于数组中的当前元素,是否大于数组中的下一个元素
注意:如果数组未排序,可以执行
array.sort()

const arr=[200、180、150、120、80];
让总和=平均减少((acc,x)=>{
返回acc+x
}, 0)
设平均值=总和/阵列长度;
for(设i=0;iarr[i+1]){
log(“这里的标记“+(i+1)+”是“+avg+”的位置”);
}

}
使用
findIndex
方法。(内联注释)

const getindexsbound=(arr,avg)=>{
常量索引=arr.findIndex((num)=>avg>num);
如果(指数<1){
//当索引0表示第一个元素时
//当索引为-1时,找不到num
返回“找不到绑定的索引”;
}否则{
返回[索引-1,索引];
}
};
常数arr=[20018015012080];

log('146'的绑定索引',getIndexeBound(arr,146));
使用
findIndex
方法。(内联注释)

const getindexsbound=(arr,avg)=>{
常量索引=arr.findIndex((num)=>avg>num);
如果(指数<1){
//当索引0表示第一个元素时
//当索引为-1时,找不到num
返回“找不到绑定的索引”;
}否则{
返回[索引-1,索引];
}
};
常数arr=[20018015012080];
log('146'的绑定索引',getIndexeBound(arr,146));
尝试如下:

const arr = [200, 180, 150, 120, 80];
let数组=[20018015012080];
const sum=array.reduce(函数(a,b){
返回a+b;
}, 0);
const average=sum/array.length;//146
让我们检查=(arr、开始、结束、值)=>{
设istart=array.indexOf(start);
设iend=array.indexOf(end);
设iaverage=0;
如果(istart==-1 | | iend===-1){
返回null;
};
对于(var i=istart;i尝试如下:

const arr = [200, 180, 150, 120, 80];
let数组=[20018015012080];
const sum=array.reduce(函数(a,b){
返回a+b;
}, 0);
const average=sum/array.length;//146
让我们检查=(arr、开始、结束、值)=>{
设istart=array.indexOf(start);
设iend=array.indexOf(end);
设iaverage=0;
如果(istart==-1 | | iend===-1){
返回null;
};
对于(var i=istart;i
让numArr=[20018015012080];
const calcAvg=arr=>arr.reduce((acc,cur)=>acc+=cur,0)/numar.length;
常量isAvgPlace=(arr、start、end、avg)=>{
让sorted=[…arr].sort((a,b)=>a-b);
设avgPlace=sorted.filter((cur,i)=>avg=avg);
返回avgPlace[0]==start&&avgPlace[1]==end;
}
常数平均值=calcAvg(努马尔);
log(isAvgPlace(努马尔,150,180,平均值));
log(isAvgPlace(numArr,120150,平均值));
让numArr=[20018015012080];
const calcAvg=arr=>arr.reduce((acc,cur)=>acc+=cur,0)/numar.length;
常量isAvgPlace=(arr、start、end、avg)=>{
让sorted=[…arr].sort((a,b)=>a-b);
设avgPlace=sorted.filter((cur,i)=>avg=avg);
返回avgPlace[0]==start&&avgPlace[1]==end;
}
常数平均值=calcAvg(努马尔);
log(isAvgPlace(努马尔,150,180,平均值));
log(isAvgPlace(numArr,120150,平均值));
const数组=[20018015012080];
常量检查=(数组,a,b)=>{
//复制数组
常数阵列气旋=[…阵列];
//和拷贝数组
const sum=arracyclone.reduce(函数(a,b){
返回a+b;
}, 0);
//平均拷贝数组
常数平均值=总和/阵列长度;
//添加到副本数组
旋风分离器推力(平均值);
//排序拷贝数组
ArraCyclone.sort(功能(a、b){
返回b-a;
});
//获取推送编号的索引
常数指数=ArraCyclone.indexOf(平均值);
//检查平均数是否介于给定的两个数字之间
如果((旋风分离器[指数-1]==a)和&(旋风分离器[指数+1]==b)){
//如果可以的话
console.log(ArraCyclone.slice(索引-1,索引+2))
}否则{
console.log(“未找到”)
}
}
检查(数组,150120);
const数组=[20018015012080];
常量检查=(数组,a,b)=>{
//复制数组
常数阵列气旋=[…阵列];
//和拷贝数组
const sum=arracyclone.reduce(函数(a,b){
返回a+b;
}, 0);
//平均拷贝数组
常数平均值=总和/阵列长度;