Корреляция базы данных JavaScript

Я пытался "коррелировать" между выбранными пользователем ответами и именем свойства объекта, чтобы, если они совпадали, отображалось то, что внутри.

Моя программа - это средство поиска рецептов, которое возвращает рецепт, состоящий из ингредиентов, выбранных пользователем. мой код в настоящее время выглядит так:

// свойство - это ингредиенты, а значение - рецепты, содержащие эти ингредиенты. Карта генерируется автоматически

 ``var map  =   {
"pork" : [recipe1, recipe2, ...],
    "beef" : [],
    "chicken" :[],
}

// это выбирает пользователя из домена

var cucumber = specificVegetable[7];
var lemon = specificFruits[0];

// Затем этот код находит пересечение рецепта (рецепты, которые используют более одного ингредиента)

function intersect(array1, array2) 
{
    return array1.filter(function(n) {
        return array2.indexOf(n) != -1
    });
}

var recipiesWithLemon = map["lemon"];   **// makes the lemon object is map**

var recipiesWithCucumber = map["cucumber"]; **// makes the cucumber object in map**

// Вот где я застрял

function check(){

    var both = intersect(recipiesWithLemon, recipiesWithCucumber);
    if ( cucumber.checked && lemon.checked){
        for (var stuff in map){
            if(stuff="cucumber" &&  stuff="lemon"){
                return both;
            }
        }
    }


}
check();

так что в основном я пытался сделать так, чтобы я пересекся, а затем, если пользователь выбрал лимон и огурец, взглянул на свойства объекта карты. если имя свойства равно точной строке, вернуть оба. Это был план, но код не работает, и я не уверен, как это исправить.

Я планирую написать код для каждого возможного результата, который может сделать пользователь, поэтому мне нужно найти корреляцию между выбором пользователя и картой, на которой хранится рецепт. Я понимаю, что это не самый эффективный способ, но я озадачен тем, как сделать это по-другому.

Спасибо за помощь.

1 ответ

Я использую проект с открытым исходным кодом jinqJs, чтобы упростить процесс. Я также изменил вашу карту на массив объектов JSON. Если вам нужен объект карты не в виде массива, дайте мне знать. Я изменю пример кода.

var map  =  [
    {"pork" : ['recipe1', 'recipe2']},
    {"beef" : ['recipe3', 'recipe4']},
    {"peach" :['recipe5', 'recipe6']},
    {"carrot" :['recipe7', 'recipe8']}
];

var selectedFruit = 'peach';
var selectedVeggie = 'carrot';

var selections = [selectedFruit, selectedVeggie];

var result = jinqJs().from(map).where(function(row){
    for(var f in row) {
      if (selections.indexOf(f) > -1)
        return true;
    }
  
    return false;
}).select();

document.body.innerHTML += '<pre>' + JSON.stringify(result, null, 2) + '</pre><br><br>';
<script src="https://rawgit.com/fordth/jinqJs/master/jinqjs.js"></script>

Другие вопросы по тегам