Как фильтровать без использования встроенной функции в Javascript? - PullRequest
0 голосов
/ 02 декабря 2018

Итак, у меня есть массив, который выглядит так, как показано ниже:

const newTeachers = [
      { firstName: "Steve", subjects: ["English", "Maths", "History"] },
      { firstName: "Celia", subjects: ["Maths", "Science"] },
    ];

Я хочу создать функцию, которая принимает 2 параметра: 1 - массив, а 2 - значение строки фильтра.

function fliterSubject(teachers, subject) {

}

Я изучил встроенный способ реализации этой строки кода:

 return newCandidates.filter(teacher=> teacher.subjects.includes(subject));

Однако я хочу понять, как я могу отфильтровать его вручную вместо использования встроенной функции фильтра..

Ответы [ 2 ]

0 голосов
/ 02 декабря 2018

Пожалуйста, проверьте это.

var filterSubject = function(teachers, subject) {
  var filteredTeachers = [];
  for (var i=0; i<=teachers.length-1; i++) {
    var teacher = teachers[i];
    for (var j=0; j<=teacher.subjects.length-1; j++) {
      if (teacher.subjects[j].toLowerCase()== subject.toLowerCase()) {
        filteredTeachers.push(teacher);
      }
    }
  }
  return filteredTeachers;
}

Пожалуйста, проверьте пример @ CodePen https://codepen.io/animatedcreativity/pen/213ddd0a66b73b05c907da72c8aef3e3

0 голосов
/ 02 декабря 2018

Объяснение

Этого можно добиться с помощью простого цикла for.

Поэтому вам нужно зациклить массив, который вы получаете в качестве аргумента в функции.

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

Так что-то вроде этого: -

function manuamMap(input, search){

Let temp = [];

for(let i=0; i<limit; i++) {
  if(some confition){
    temp.push();
  }
}

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