Сравните два объекта массива и найдите уникальные значения

У меня есть два объекта, которые являются массивами. Я хочу сравнить их, найти уникальные значения и присвоить их другому массиву. вот мой код

function()
{
var input1 = [2,3,4,5];
var input2 = [2,3];
var arrayVal = [];
var res = input1.filter(function (n)
{
return input2.indexOf(n) == -1
}):
arrayVal.push(res);
console.info(arrayVal);
}

ожидаемый результат 4,5. Но мой выход 2,3,4,5.

Поведение ключевого слова "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
0
69
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

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

Вот какой-то старомодный код, который должен работать:

for (var i = 0; i < input1.length; i++){
   var found=false;
    for (var j = 0; j < input2.length; j++){
        if (input1[i]==input2[j]){
          found=true;
          break;
        }
   }
  if (!found)
    arrVal.push(input1[i]);    
}

В вашем коде есть синтаксическая ошибка.

return input2.indexOf(n) == -1
}): // <-- should be a semicolon

Ваш код выглядит в основном нормально. Вывод на самом деле [[4, 5]], так как вы вызываете arrayVal.push(res);. Эта строка помещает массив в другой массив, что приводит к вложенному массиву. Вы можете использовать синтаксис распространения и избежать вложенности: arrayVal.push(...res);. После этого выводится [4, 5].

Полный код будет:

function()
{
  var input1 = [2,3,4,5];
  var input2 = [2,3];
  var arrayVal = [];
  var res = input1.filter(function (n)
  {
    return input2.indexOf(n) == -1
  });
  arrayVal.push(...res);
  console.info(arrayVal); // [4, 5]
}

И я уверен, что ваш код изменен для вопроса, но нет смысла иметь здесь и res, и arrayVal. Вы можете реорганизовать код следующим образом:

function() {
  var input1 = [2,3,4,5],
    input2 = [2,3];
  var input1SubtractInput2 = input1.filter(function(n) {
    return input2.indexOf(n) === -1
  });
  console.info(input1SubtractInput2); // [4, 5]
}

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