Может быть, если вы покажете весь свой класс контроллера, я могу помочь вам немного больше.
Постарайтесь сделать свой пост следующим образом.
Сделайте один класс каждый get / post
, например, в папке Controllers / Api / MyFunction.cs
в WebApiConfig.cs
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "API/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
в вашем «MyFunction.cs»
public class MyFunction : ApiController
{
public string Get()
{
return "hello";
}
public bool Post(string param1)
{
return 1;
}
}
Не имеет ничего общего с ES6, но вам следует упростить ваше состояние с
(A && ¬Y) || (B && ¬X) || (A && B && X && Y)
до
(A || ¬X) && (B || ¬Y)
. Я бы также рекомендовал использовать some
вместо map
+ includes
. Оба эти изменения сделают ваш код более удобным для чтения и более эффективным:
filteredClasses() {
const {gradeFilter, subjectFilter} = this;
return _.flatMap(this.classes).filter(x =>
x.name === this.selectedClass.name
|| (!gradeFilter.length || gradeFilter.some(el => el.value === x.grade))
&& (!subjectFilter.length || subjectFilter.some(el => el.value === x.subjectId))
);
}
Вы можете повысить эффективность, избегая выполнения одного и того же .map()
на каждой итерации .filter()
: создайте для него Set и затем проверьте членство с помощью .has()
:
filteredClasses() {
const hasGrades = this.gradeFilter.length;
const hasSubjects = this.subjectFilter.length;
const gradeSet = new Set(this.gradeFilter.map(el => el.value));
const subjectSet = new Set(this.subjectFilter.map(el => el.value));
return _.flatMap(this.classes).filter(x =>
x.name === this.selectedClass.name ||
( (!hasGrades || gradeSet.has(x.grade)) &&
(!hasSubjects || subjectSet.has(x.subjectId)) )
);
}