Передача массивов через входные значения флажка?

#javascript #arrays #leaflet #lodash

#javascript #массивы #брошюра #Lodash

Вопрос:

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

 var checkedValue = document.querySelector('.leaflet-control-layers-selector:checked').value;

    result = _.intersection(checkedValue);
    console.log(checkedValue);

document.getElementById("AllMuseums").value = AllMuseums;
document.getElementById("MPaid").value = MPaid;
document.getElementById("MFree").value = MFree;
document.getElementById("MResto").value = MResto;
  

Вот мои входные данные:

 <label>
        <div><input type="checkbox" class="leaflet-control-layers-selector" id="AllMuseums" checked><span>All Museums</span></div>
    </label>
    <label>
        <div><input type="checkbox" class="leaflet-control-layers-selector" id="MPaid" value="MPaid"><span id="icons1">Paid Admission</span></div>
    </label>
    <label>
        <div><input type="checkbox" class="leaflet-control-layers-selector" id="MFree" value="MFree"><span id="icons2">Free Admission</span></div>
    </label>
    <label>
        <div><input type="checkbox" class="leaflet-control-layers-selector" id="MResto" value="MResto"><span id="icons3">Restaurants</span></div>
    </label>
  

И вот мои массивы:

 var AllMuseums=[Naturhistoriska,Junibacken,ArkDes,Fjarilshuset,Tekniska,Polismuseet,Skansen,Bergrummet,Vikingaliv,Vasa,Nordiska,Nobel,Moderna],
        MPaid=[Junibacken,Fjarilshuset,Tekniska,Polismuseet,Skansen,Bergrummet,Vikingaliv,Vasa,Nordiska,Nobel],
        MFree=[Naturhistoriska,ArkDes,Moderna],
        MResto=[Naturhistoriska,Junibacken,ArkDes,Fjarilshuset,Tekniska,Skansen,Bergrummet,Vikingaliv,Vasa,Nordiska,Nobel,Moderna],
  

Ответ №1:

Итак, есть решение:https://jsfiddle.net/ajxeyqo4

входные данные :

первый входной тег добавляет значение

  <label>
    <div><input type="checkbox" class="leaflet-control-layers-selector" id="AllMuseums" value="AllMuseums" checked><span>All Museums</span></div>
</label>
<label>
    <div><input type="checkbox" class="leaflet-control-layers-selector" id="MPaid" value="MPaid"><span id="icons1">Paid Admission</span></div>
</label>
<label>
    <div><input type="checkbox" class="leaflet-control-layers-selector" id="MFree" value="MFree"><span id="icons2">Free Admission</span></div>
</label>
<label>
    <div><input type="checkbox" class="leaflet-control-layers-selector" id="MResto" value="MResto"><span id="icons3">Restaurants</span></div>
</label>
<button onclick='test()'>
    test
</button>
  

А ваши скрипты :

 function test(){
    var AllMuseums=['Naturhistoriska','Junibacken','ArkDes','Fjarilshuset','Tekniska','Polismuseet','Skansen','Bergrummet','Vikingaliv','Vasa','Nordiska','Nobel','Moderna'],
            MPaid=['Junibacken','Fjarilshuset','Tekniska','Polismuseet','Skansen','Bergrummet','Vikingaliv','Vasa','Nordiska','Nobel'],
            MFree=['Naturhistoriska','ArkDes','Moderna'],
            MResto=['Naturhistoriska','Junibacken','ArkDes','Fjarilshuset','Tekniska','Skansen','Bergrummet','Vikingaliv','Vasa','Nordiska','Nobel','Moderna'];
            
    var checkedValue = document.querySelectorAll('.leaflet-control-layers-selector:checked');

    var a =[]
    _.map(checkedValue, function(value) {
        a.push(eval(value.value));
    });

    var result = _.intersection(...a);
    console.log(JSON.stringify(result))
}
  

Комментарии:

1. это не работает. Он по-прежнему просто возвращает имя моей переменной (т. Е. MResto), а не массив.

2. РЕДАКТИРОВАТЬ, это работает, но я получаю гораздо больше деталей в результатах, чем мне нужно. Мне просто нужны строки в моих массивах. Почему он отправляет так много дополнительной информации?

3. Это возвращаемое пересечение массивов, которое именно вам нужно.

4. Он возвращает нечто, называемое node, и содержит гораздо более запутанную информацию, чем некоторый массив строк.

5. попробуйте это: console.log(JSON.stringify(результат))