Подтвердить что ты не робот

За цикл, который сравнивает два массива, которые ищут совпадающие значения

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

Вот несколько фрагментов кода, который я пытался в качестве примера:

var daysArray = ["1", "2", "3", "4", "5"];
var courseHwork = ["4", "8", "15", "16", "23", "42"];

поэтому в приведенных выше массивах имеется только одно совпадающее значение: "4"

здесь следующая часть:

for (var i = 0; i < courseHwork.length; i++) {
//in my actual code courseHwork contains several objects, each of which 
//has a duedate property, so here I want to see if this part of the duedate 
//property is equal to any position in the daysArray array.
   if (courseHwork[i].duedate.substring(8,10) === daysArray[i]) {
//here I mean to select an element of this class that contains a string 
//that is equal to that of the matching positions in both arrays. then 
//once found it should take the title property from one of the objects in the
//courseHwork array and append it there.
   $('.fc-day-number:contains("'+daysArray[i]+'")').append("<div class='assignment'>"+courseHwork[i].title+"</div><br />");
        }
        }

Если все будет работать как запланировано, он найдет div, который содержит строку "4" и добавит это свойство "title" из соответствующего объекта в массиве courseHwork.

note: мои фактические дниArray покрывают числа как строки "1" - "31", а массив объектов объекта dynamic динамически заполняется, поэтому он может содержать любое количество объектов, однако ни один объект не будет иметь значение свойства, которое превышает "31" в найденной подстроке.

* Вопрос: Как я могу прокручивать два массива, и каждый раз, когда совпадающие значения находятся между двумя массивами, найден элемент html, который также содержит то же самое значение, то есть что-то приложенное к нему? *

4b9b3361

Ответ 1

Вот идея, с которой я придумал:

var daysArray = ["1", "2", "3", "4", "5", "12"];
var courseHwork = ["4", "8", "15", "16", "23", "42", "12"];

for (var i = 0; i < courseHwork.length; i++) {
    for (var j = 0; j < daysArray.length; j++) {
        if (courseHwork[i] == daysArray[j]) {
          $('div:contains("'+daysArray[j]+'")').append("<div class='assignment'>"+courseHwork[i]+" - appended</div>");
        }
    }
}

Вы можете найти его здесь: http://jsfiddle.net/4cqCE/2/

Хорошо, проверьте, что вы хотите. Сначала он ищет ТОЛЬКО значение в 2 массивах, и если он найдет его, он добавит что-то к div, содержащему "4" в нем. Это то, что вы хотите?

Вот пример с двумя одинаковыми значениями с двумя div, каждый из которых содержит одно из значений. http://jsfiddle.net/4cqCE/3/

Ответ 2

Вы можете сделать что-то вроде этого:

var daysArray = ["1", "2", "3", "4", "5"];
var courseHwork = ["4", "8", "15", "16", "23", "42"];

var arr = daysArray.concat(courseHwork);
var sorted_arr = arr.sort();
var results = [];
for (var i = 0; i < arr.length - 1; i++) {
    if (sorted_arr[i + 1] == sorted_arr[i]) {
        results.push(sorted_arr[i]);
    }
}

console.log(results);

Вы можете запустить код здесь: http://jsfiddle.net/WtEwJ/2/

Это приведет к созданию нового массива results, содержащего только повторяющиеся элементы.

Ответ 3

Привет, используя lodash или подчеркивание, вы можете легко пересечь два массива.

_.intersection([2, 1], [2, 3]);

Результат - [2].

Документ Lodash: https://lodash.com/docs/4.17.2#intersection

Ответ 4

Я думаю, вы должны сначала создать пересечение массива , а затем перебрать результат, чтобы сделать свою вещь...