作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
有没有一种最聪明的方法可以达到相同的结果?
简要说明:
routes = [
{ name: 'vehicle', activated: true},
{ name: 'userassignment', activated: true},
{ name: 'relations', activated: true},
{ name: 'journeys', activated: true},
{ name: 'expenses', activated: true}
];
任务 - 创建一个接受上述数组的函数,并且:
我像下面的代码那样做了,但我的前辈希望它更聪明。
highlightActiveRoute(array: any[], chosen: string) {
array.forEach(element => {
element.activated = false;
if (element.name === chosen) {
element.activated = true;
if (element.name === 'journeys' || element.name === 'expenses') {
this.routes[2].activated = true;
}
}
});
}
我不确定我是否可以把它写得更聪明,但也许你可以 :) 非常感谢你提供的任何灵感。
最佳答案
仅使用 ArrayIterators(ECMAScript 2015)。使用以下代码,您不必担心数组中的任何元素是否会更改其位置:
highlightActiveRoute(array: any[], chosen: string) {
array.forEach(element=>{element.activated=false});
if(['journeys','expenses'].includes(chosen))
{
array[array.findIndex(element=>{return element.name==='relations'})].activated = true;
array[array.findIndex(element=>{return element.name==='expenses'})].activated = true;
array[array.findIndex(element=>{return element.name==='journeys'})].activated = true;
}
else
{
array[array.findIndex(element=>{return element.name===chosen})].activated = true;
}
return array;
}
关于javascript - JS/TS 最聪明的方法如何遍历对象数组并进行一些更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52891894/
我是一名优秀的程序员,十分优秀!