繁体   English   中英

从 filter 和 findIndex 循环的更好解决方案? 更短的解决方案? JS

[英]Better solution for looping from filter and findIndex? Shorter solution ? JS

我需要为此循环找到更好或更短的解决方案。

let filteredTraining = this.trainingPlan.trainingTemplateExercises.filter(
  (al) => al == trainingExerciseId
);
let index = this.trainingPlan.trainingTemplateExercises.findIndex(
  (el) => el == filteredTraining[0]
);
this.trainingPlan.trainingTemplateExercises.splice(index, 1);

这只是 function 代码的一部分,但我认为它可以写得更好。 变量的值是什么并不重要。

如果当前代码有效,并且始终可以找到该元素,那么您只需要一个indexOf

const { trainingTemplateExercises } = this.trainingPlan;
trainingTemplateExercises.splice(trainingTemplateExercises.indexOf(trainingExerciseId) , 1);

如果该元素可能不存在,则需要在拼接之前检查索引是否为 -1:

const { trainingTemplateExercises } = this.trainingPlan;
const index = trainingTemplateExercises.indexOf(trainingExerciseId);
if (index !== -1) {
  trainingTemplateExercises.splice(index , 1);
}

如果数组不包含重复元素,并且您可以重新分配数组而不是对其进行变异,我更喜欢splice

this.trainingPlan.trainingTemplateExercises = this.trainingPlan.trainingTemplateExercises
  .filter(el => el !== trainingExerciseId);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM