2016-09-20 2 views
0

В настоящее время я создаю приложение, которое использует Binaural Beats/играет на разных частотах в каждом ухе. Вот что я работаю с:Поиск диапазона между значениями и состояниями

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

Путь бинауральные ритмы работы является то, что разница между частотой играл в левом ухе и правого уха должны быть эквивалентны значениям в массиве. Например, бинауральный бит гамма-волн будет иметь разницу между частотами 30 - 50, как показано в объекте/массиве.

В настоящее время я использую ползунки и текстовые поля для установки воспроизводимых частот. Как бы я мог динамически устанавливать состояние (гамма, бета, альфа и т. Д.), Проверяя значения между частотами, не будучи неуклюжим? Я пробовал использовать _inRange в Lodash, но все еще не могу понять.

Любая помощь была бы высоко оценена, спасибо!

+0

Вы можете добавить на вопрос - Что такое ожидаемый результат? Вы хотите знать, находятся ли все выборы в радиусе действия? Вы хотите найти того, кто этого не сделает? Как выглядят данные ввода? Можете ли вы показать, что вы пробовали до сих пор? –

+0

Уверенный, вот мой Gist: 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>

Смежные вопросы