Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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_Loops_Object - Fatal编程技术网

Javascript 如何在对象中循环并匹配对象中一系列数字中的一个数字?

Javascript 如何在对象中循环并匹配对象中一系列数字中的一个数字?,javascript,loops,object,Javascript,Loops,Object,我的对象 这是我的obj obj = [ { a: [1, 91] }, { b: [91, 399] }, { c: [399, 409] } ] 我正在跟踪用户鼠标并将其存储在变量中: userMouse = event.clientX; 如何检查clientX是否在某个对象元素范围内,以及是否提供该对象的索引 请在纯JS无库中执行此操作。如果我真的了解您,您希望找到介于哪个元素范围之间的

我的对象 这是我的obj

obj = [
    {
        a: [1, 91]
    }, 
    {
        b: [91, 399]
    }, 
    {
        c: [399, 409]
    }
]
我正在跟踪用户鼠标并将其存储在变量中:

userMouse = event.clientX;
如何检查clientX是否在某个对象元素范围内,以及是否提供该对象的索引


请在纯JS无库中执行此操作。

如果我真的了解您,您希望找到介于哪个元素范围之间的数字:

var num=100;

for(var i=0; i<obj.length; i++)
{
   var rangeFirst = obj[i].elementRange[0];
   var rangeSecond = obj[i].elementRange[1];
   if(num>rangeFirst && num <=rangeSecond)
   return obj[i].elementRange
}
var num=100;

对于(var i=0;irangeFirst&&num它实际上太简单了,我只需要将每个对象的数目设置在最小值和最大值之间。但是我不明白为什么我需要将[0]放在我的筛选函数的末尾

  var object = obj.filter(function(obj) {
                return event.clientX > obj.a[0] && event.clientX < obj.a[1];
                    })[0];
var object=obj.filter(函数(obj)){
返回event.clientX>obj.a[0]&&event.clientX
您可以使用,因此对于给定的x,您可以执行以下操作:

idx = obj.findIndex(({ elementRange: [low, high] }) => low <= x && x < high);
//设置变量
设bj=[{
元素范围:[1,91]
}, {
元素范围:[91399]
}, {
元素范围:[399409]
}]
设x=10
//您正在寻找的函数[应该在任何地方都可用(浏览器)]
函数getIndex(bj,x){
//迭代
为了(让我进入北京){
if((bj[i].elementRange[0]x)){
//如果匹配,则返回索引
返回i;
}
}
返回-1;
}
//试验
console.log(getIndex(bj,1))
console.log(getIndex(bj,100))
console.log(getIndex(bj,10))

数字范围的含义是什么?它们是X坐标值吗?我有div,我对鼠标输入的div感兴趣。根据鼠标在div中输入的位置,我会显示效果。我已经更新了问题,以更具体地说明解决方案。但是要了解
div
,可以使用
document.elementFromPoint(X,y);
我用.filter解决了这个问题。filter意味着你只需要filter任务?例如,你说过如何用filter完成它。我已经用filter完成了。但我仍然不知道如何检索对象索引。我目前可以返回匹配的数据,但不能返回obj中该元素的索引。Frazin,你忘了在l之后还有一个“;”ength:)问题不在于DIV,而在于如何循环对象元素,并将变量与每个元素的范围进行比较,然后返回与范围匹配的元素索引。我没有说
DIV
,但因为您的问题提到了鼠标坐标,您肯定是在引用屏幕上与鼠标指针位置相关的元素。这只是一个建议,因为你的问题没有详细说明。关于范围搜索,
findIndex
应该是您所需要的。filter返回一个数组,所以执行[0]就是说给我第一个匹配项。
elem = document.elementFromPoint(x, y);
//setting variable  
let bj = [{
  elementRange: [1, 91]
}, {
  elementRange: [91, 399]
}, {
elementRange: [399, 409]
}]
let x = 10

//function you are looking for [should work everywhere (browsers)]
function getIndex(bj,x){
  //iterate
  for (let i in bj) {

    if ( (bj[i].elementRange[0]<x) && (bj[i].elementRange[1]>x)){
      //return index if match
      return i;
    }
  }
  return -1;
}

//Test
console.log(getIndex(bj,1))

console.log(getIndex(bj,100))
console.log(getIndex(bj,10))