Есть ли функция loadash для сравнения двух массивов и возврата true, только если все значения из arr2 присутствуют в arr1?

Мне нужно сравнить два массива и вернуть true, если только массив 1 содержит все значения массива 2. Какая функция loadash подходит для этого?

let arr1 = [1, 2, 3, 4]
let arr2 = [1, 2] 
let arr3 = [1, 5] 

сравнение arr1 с arr2 должно возвращать true сравнение arr1 с arr3 должно возвращать false

Почему бы не использовать чистый js?

Maheer Ali 08.04.2019 11:11
arr2.every(i => arr1.includes(i));... ? Есть ли какая-то причина для использования lodash здесь?
briosheje 08.04.2019 11:13

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

hindmost 08.04.2019 23:00

Извините, я нашел решение в разделе комментариев, но прямого ответа не было! Что мне теперь делать?

Ahmed 09.04.2019 14:37
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
5
133
6
Перейти к ответу Данный вопрос помечен как решенный

Ответы 6

Ответ принят как подходящий

Вы можете просто использовать every:

let arr1 = [1, 2, 3, 4];
let arr2 = [1, 2];
let arr3 = [1, 5];

const allElements = (a1, a2) => a2.every(e => a1.includes(e));
console.info(allElements(arr1, arr2));
console.info(allElements(arr1, arr3));

Здесь нет необходимости в loadash, просто используйте собственный метод JavaScript Array#every с методом Array#includes.

function compareArray(arr1, arr2) {
  return arr2.every(v => arr1.includes(v))
}

let arr1 = [1, 2, 3, 4]
let arr2 = [1, 2]
let arr3 = [1, 5]

console.info(compareArray(arr1, arr2))
console.info(compareArray(arr1, arr3))
let arr1 = [1, 2, 3, 4]
let arr2 = [1, 2] 

for(let x of arr2) {
    _.includes(arr1, x) || true;
}

Вы можете использовать _.difference

let arr1 = [1, 2, 3, 4]
let arr2 = [1, 2] 
let arr3 = [1, 5] 


console.info(_.difference(arr2,arr1).length === 0)
console.info(_.difference(arr3,arr1).length === 0)
<script src = "https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.js"></script>

@briosheje Вы правы. Я неправильно понял. я не обновлял ответ

Maheer Ali 08.04.2019 11:29

Чем ваш ответ отличается от моего?

hindmost 08.04.2019 16:20

Просто для полноты вы можете взять Set и сравнить с Set#has.

let arr1 = [1, 2, 3, 4],
    arr2 = [1, 2],
    arr3 = [1, 5],
    base = new Set(arr1);

console.info(arr2.every(Set.prototype.has, base));
console.info(arr3.every(Set.prototype.has, base));

Для большей полноты у lodash также есть прототип every, поэтому, чтобы «полностью» ответить на вопрос, хотя и не относящийся к делу, вы можете использовать _.every.

briosheje 08.04.2019 11:17

@briosheje, зачем мне использовать функцию фреймворка, если у меня есть функция, встроенная в язык?

Nina Scholz 08.04.2019 11:18

Я согласен с вами, и я бы тоже не стал его использовать, однако вопрос Есть ли функция loadash для сравнения двух массивов и возврата true, только если все значения из arr2 присутствуют в arr1?, поэтому стоит упомянуть, что у lodash также есть этот прототип, хотя лично я бы использовал его никогда.

briosheje 08.04.2019 11:19

Вы можете использовать _.difference таким образом:

let arr1 = [1, 2, 3, 4]
let arr2 = [1, 2] 

const b = _.difference(arr2, arr1).length === 0

Другие вопросы по теме