@exxagw

Как узнать разность массивов javascript?

каким образом узнать
var visibleObjects = [124,125];
var allObjects = [124,125,126];

function сomparison(arr1,arr2){
    var idx = 0, arr3 = [];
	for (var i = 0; i < arr2.length; i++){
	    idx = arr1.indexOf(arr2[i]);
		if (idx >= 0) arr3.push(arr2[i]);
	}
	return arr3;
}
 console.log('needremove', сomparison(allObjects,visibleObjects));


вернет "needremove [124, 125]"
а нужно получить "needremove [126]"

т.е. элементы которые есть в массиве allObjects, но нету в visibleObjects
  • Вопрос задан
  • 7055 просмотров
Решения вопроса 1
kirill89
@kirill89
Если в коде много работы с массивами, могу предложить использовать lodash, тогда это делается так:

_.xor(visibleObjects, allObjects)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
@Kano
Мне понравилось решение
Array.prototype.diff = function(a) {
    return this.filter(function(i) {return a.indexOf(i) < 0;});
};

Взятое от сюда stackoverflow.com/questions/1187518/javascript-arr...
Ответ написан
@TheMiksa
const diffArray = (arr1, arr2) => {
            const newArr = [];
            for (let key of arr1) {
                if (arr2.indexOf(key) === -1) {
                    newArr[newArr.length] = key;
                }
            }
            for (let key of arr2) {
                if (arr1.indexOf(key) === -1 && newArr.indexOf(key)) {
                    newArr[newArr.length] = key;
                }
            }
            return newArr;
        }
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы