2015-11-18 7 views
-2

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

Когда пользователь выбирает букву, ее необходимо добавить в выбранный массив букв и удалить из массива рандомизированных букв. Проблема возникает, когда в каждом массиве есть две одинаковые буквы.

Пример, который поднял эту проблему, - это работа Терри.

Когда R щелкнут, мне нужно только одно из R, которое нужно удалить из массива и добавить к другому. Как я могу это достичь?

Массивы выглядеть следующим образом:

буквы = [ "т", "е", "г", "г", "у"]; shuffled = ["e", "t", "r", "y", "r"];

и вот мой код:

$(document).on('click', '.order .letter', function(e){ 
    e.preventDefault(); 
    clickedLetters.splice($.inArray($(this).text().replace(/ /g,''), clickedLetters),1); 
    console.log(letters); 
    console.log(shuffled); 
    console.log(clickedLetters); 
    $('.order p').empty(); 
    $('.keyboard .keyboard-row').empty(); 
    l=0; 
    while (l < letters.length) { 
     console.log(letters[l]); 
     revealedLetter=""; 
     if (clickedLetters[l]!= undefined) { 
      revealedLetter=clickedLetters[l]; 
     } 
     $('.order p').append('<span class="letter revealed">'+revealedLetter+'</span>'); 
      // $(this).addClass('correct'); 
     l++; 
    } 
    s=0 
    while (s < shuffled.length){ 
     if (shuffled[s].match(/[a-z]/i)){ 
      if (jQuery.inArray(shuffled[s],clickedLetters) == -1) { 

       $('.keyboard .keyboard-row').append('<div class="anagram-letter">'+shuffled[s]+'</div>') 
      } 
      s++ 
     } 
    } 

    if (clickedLetters.length == letters.length) { 
     alert('done'); 
    } 

}); 

Спасибо, Шон

+1

Вам необходимо добавить соответствующий код, который вы уже пробовали, и пример массива. – Andy

+0

предоставляют массивы, данные и текущий код, который пытается это сделать – mikus

+0

Вопрос был обновлен. –

ответ

0

Оказывается, я уже работал, я только что поставил код в неправильном месте. Здесь он предназначен для всех, кто нуждается в этом в будущем:

clickedLetters.splice($.inArray($(this).text().replace(/ /g,''), clickedLetters),1); 
1

Ваш ответ (для гипотетического array1 и массив2):

array2[array2.length] = array1[5]; 
array1.splice(5, 1); 

поставить шестой элемент массив 1 до конца массива 2, затем удалите ненужную строку из массива 1

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