как проверить, существует ли весь элемент массива в другом массиве - PullRequest
0 голосов
/ 03 июля 2019

у меня есть 2 массива первый массив:

arr1 = [
  {
    id: 1,
    name: "aa"
  },
  {
    id: 2,
    name: "aa"
  },
  {
    id: 3,
    name: "aa"
  }
];

arr2 = [1,3];

Я хочу проверить, все ли object.id в arr1 существуют в arr2 или нет

Ответы [ 3 ]

0 голосов
/ 03 июля 2019

использовать every.

arr1 = [{
    id: 1,
    name: "aa"
  },
  {
    id: 2,
    name: "aa"
  },
  {
    id: 3,
    name: "aa"
  }
];

arr2 = [1, 3];

console.log(arr1.every(({
  id
}) => arr2.includes(id)));
0 голосов
/ 03 июля 2019

Я перечислил примеры ниже.Один использует Include, другой использует indexof.Internet Explorer не поддерживает включает https://caniuse.com/#feat=array-includes, поэтому, если вам требуется поддержка всех браузеров, используйте indexof.Смотрите код ниже.

var arr1 = [
  {
    id: 1,
    name: "aa"
  },
  {
    id: 2,
    name: "aa"
  },
  {
    id: 3,
    name: "aa"
  }
];

var arr2 = [1,3];

// Using Includes
function compareArrays(arr1, arr2) {
	for(var i = 0; i < arr1.length; i++) {
		if(!arr2.includes(arr1[i].id)) {
			return false;
		}
	}
	return true;
}

// One thing to note, includes is not supported by internet explorer, so you have to use indexof. Example below.
function compare(arr1, arr2) {
	for(var i = 0; i < arr1.length; i++) {
		if(arr2.indexOf(arr1[i].id) === -1) {
			return false;
		}
	}
	return true;
}

console.log(compareArrays(arr1, arr2));
console.log(compare(arr1, arr2));
0 голосов
/ 03 июля 2019
const exists = arr1.reduce((carry, item) => {
  if (carry === false) {
    return carry;
  };
  return arr2.includes(item.id);
});

Подробнее о сокращении здесь https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...