Ошибка при использовании функции Javascript filter () в freecodecamp

function destroyer(arr) {

var arry=[];


for(var i=1;i<arr.length;i++)
{
  arr[0] = arr[0].filter(cc => cc != arr[i]);
}
return arry;
}

destroyer([1, 2, 3, 1, 2, 3], 2, 3);

Я в основном должен вернуть все элементы первого подмассива, которых нет в остальной части массива.

Its displaying "arr[0].filter isnt a function. destroyer([1, 2, 3, 1, 2, 3], 2, 3) should return [1, 1]. I basically have to return all the elements of the first sub-array which arent present in the array.

Ваша функция destroyer ожидает только один аргумент arr. Кроме того, метод фильтрации работает с массивом. В настоящее время вы пытаетесь запустить фильтр по первому значению arr. Я бы еще раз прочитал документацию Array.prototype.filter и посмотрел, поможет ли это вам решить ваш вопрос!

Sherman Hui 02.04.2018 09:08
Поведение ключевого слова "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
1
58
5

Ответы 5

Вы ничего не делаете с другими аргументами, предоставленными функции destroyer - вы должны тестировать аргументы те против arr, вы не должны тестировать arr против самого себя.

function destroyer() {
  const [arr, ...excludeArr] = arguments;
  return arr.filter(elm => !excludeArr.includes(elm));
}

console.info(
  destroyer([1, 2, 3, 1, 2, 3], 2, 3)
);

function destroyer(arr, x, y) {
return arr.filter(item => (item != x) && (item != y))
}

console.info(destroyer([1, 2, 3, 1, 2, 3], 2, 3))

const destroyer = (arr, ...args) => {
  return arr.filter(item => args.indexOf(item) < 0);
};

const result = destroyer([1, 2, 3, 1, 2, 3], 2, 3);

console.info(result);

Вы забыли вызвать свой метод, используя массив. вы должны окружить его другой парой [].

Вы можете просто вернуть отфильтрованный arr[0], чтобы получить то, что вы хотите.

function destroyer(arr) {
  for (var i = 1; i < arr.length; i++) {
    arr[0] = arr[0].filter(cc => cc != arr[i]);
  }
  return arr[0];
}

 
console.info(destroyer([[1, 2, 3, 1, 2, 3], 2, 3]));

Я чертовски уверен, что без объявления переменной arr мы тоже сможем этого добиться.

nisar 02.04.2018 09:12

Я просто хотел, чтобы вызов функции был чистым.

Sebastian Speitel 02.04.2018 09:14

как вы сказали, вы должны фильтровать первый подмассив, но вы отправляете только 1 массив со значениями int и другими значениями в качестве аргумента, фактическое использование этой функции должно быть

function destroyer(arr) {

  for(var i = 1; i < arr.length; i++)
  {
    arr[0] = arr[0].filter(cc => cc != arr[i]);
  }

  return arr[0];
}

destroyer([[1, 2, 3, 1, 2, 3], 2, 3]);

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