Как сравнить два массива в JavaScript ( так же подключен NODE JS )

96
29 декабря 2020, 10:30

Я пишу программу. И мне требуется сравнить внутренности двух массивов. Внутри массивов лежат строки. Такие как, например, 'help'. Данные массивы у меня заполняются от http запроса строками. Данные строки у меня занесены в SetInterval. А вначале интервала данные массива сохраняются перед новым перебором. Мне требуется, чтобы после нового перебора программа сравнивала внутренности двух массивов и выводила мне тот элемент, которые присутствует в одном массиве, но отсутствует в другом. Вот некое подобие того, что я хочу воссоздать.:

var s1=[];
var s2=[]; // saved information from request
setInterval(function({
 s2 = s1;
 for ( счетчик, условие перебора, счетчик++ ) { 
     s1.push(элемент от запроса);
 }
 if ( счетчик == 0 ) {
 } else {
  Вот здесь мне нужно сравнить элементы массива.
 }
}, 1000)

Пример того, что я подразумеваю под "сравнить":

var s1 = [lol, k, iase, kda];
var s2 = [k, lol, kda];
var s3 = Элементу который есть в 1-ом массиве, но отсутствует во втором.
Answer 1

function diff(a, b) { 
    return a.filter(function(i) {return b.indexOf(i) < 0;}); 
}; 
 
var arr1 = ['lol', 'k', 'iase', 'kda'], 
    arr2 = ['k', 'lol', 'kda']; 
 
console.log(diff(arr1, arr2));

Answer 2

Данная функция принимает 2 массива, сортирует их методом sort() и одним цыклом проходит сквозь них возвращая первое неравенство.

const compareArrays = (arr1, arr2) => { 
    let len = Math.max(arr1.length, arr2.length); 
    let sorted1 = arr1.sort(); 
    let sorted2 = arr2.sort(); 
 
    for (let i = 0; i < len; i++) { 
        if (sorted1[i] !== sorted2[i]) 
            return sorted1[i] || sorted2[i]; 
    } 
    return true; 
}

READ ALSO
Как сделать половину слайда?

Как сделать половину слайда?

подскажите пожалуйста каким образом можно сделать показ половину слайда? Использую slick, но можно дать советы и по другим слайдерамСпасибо

98