2016-09-20 57 views
0

我目前正在創建一個使用雙耳節拍的應用程序/在每隻耳朵中播放不同的頻率。這裏就是我的工作:在數值和設定狀態之間尋找範圍

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

雙耳節拍的工作方式是,在左耳和右耳所扮演的頻率之間的差異應該等同於數組中的值。例如,如對象/陣列中所示,Gamma Wave Binaural Beat會使頻率之間的差異爲30-50。

我目前使用滑塊和文本框來設置播放的頻率。我怎麼能夠通過檢查頻率之間的值來動態設置狀態(Gamma,Beta,Alpha等),而不會變得笨重?我已經嘗試在Lodash中使用_inRange,但仍似乎無法弄清楚。

任何幫助將不勝感激,謝謝!

+0

您可以添加到這個問題 - 是什麼預期的結果?你想知道所有的選擇是否在範圍內?你想找到一個誰不?入口數據是怎樣的?你能證明你到目前爲止所嘗試過的嗎? –

+0

嗯當然,這是我的要點:https://gist.github.com/JelaniThompson/cdde9207a963a5d6db0046d0643532b3 –

+0

我在哪裏使用Vue底部,我想動態更新標題和描述基於值之間的範圍:) –

回答

0

如果我理解正確的話你的邏輯,你需要找如果不和之差權落在裏面的範圍之一:

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>