查找值和设置状态之间的范围

Finding Range Between Values and Setting States

本文关键字:之间 范围 状态 设置 查找      更新时间:2023-09-26

我目前正在创建一个使用双耳Beats/在每只耳朵播放不同频率的应用程序。下面是我正在处理的:

var frequency = {
    "Gamma": [30, 50],
    "Beta": [14, 30],
    "Alpha": [8, 14],
    "Theta": [4, 8],
    "Delta": [0.1, 4]
};

Binaural Beats的工作方式是左耳和右耳播放的频率之间的差异应该等于数组中的值。例如,一个伽马波双耳节拍的频率之间的差异是30 - 50,如对象/数组所示。

我目前使用滑块和文本框来设置播放的频率。我该如何通过检查频率之间的值来动态设置状态(Gamma, Beta, Alpha等)而不显得笨拙?我试过在Lodash中使用_inRange,但似乎仍然无法弄清楚。

任何帮助都将非常感激,谢谢!

如果我正确理解了你的逻辑,你需要找到左和右之间的差异是否在一个范围内:

var frequency = {
  "Gamma": [30, 50],
  "Beta": [14, 30],
  "Alpha": [8, 14],
  "Theta": [4, 8],
  "Delta": [0.1, 4]
};
var freqs = ['Delta', 'Theta', 'Alpha', 'Beta', 'Gamma']; // array of frequencies from the lowset to the highest range
function findFrequency(left, right) {
  return _.find(freqs, function(value) { // find the frequnecy
    var range = frequency[value]; // take the range from the frequency array
    var diff = Math.abs(left - right); // get the diff btween right to left
    return _.inRange(diff, range[0], range[1]); // find if the diff is in the range
  });
}
var result = findFrequency(3, 32);
console.log(result);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.16.0/lodash.min.js"></script>