我正在对数组
的成员做一些事情。
我需要测试该成员是否满足某些特定条件。
- 无论条件是否满足,都会在成员上执行一些代码
- 如果满足条件,还应该在成员上执行一些其他代码。
鉴于
- 整个数组中该条件只会满足一次。
我已经尝试过使用纯 if 语句。像这样:
myArray.forEach((i) => {
if (myCondition) {
// Do something else.
}
// Do something.
});
但是,这并不理想,因为一旦满足此条件,我就不需要在数组的其他成员上测试此条件。
那我该怎么办
- 避免不必要的条件测试
- 无需引入另一次迭代
- 以一种优雅的方式?
感谢您的耐心等待。
编辑:这是一个更精确的示例。
Object.entries(modes).forEach(([key, value]) => {
console.log(key, value);
if (!currentTheme.endsWith(key)) {
// Do something else.
}
element.parentElement!.appendChild(element.cloneNode(true));
const clonedElement = element.parentElement!.lastElementChild;
clonedElement!.classList.remove(currentTheme);
// Do something. (This code is not finished.)
});
编辑:另一个类似的场景:
除了只有在满足条件的item上才会执行一段代码外,其他要求都是一样的。
最佳答案
您可以使用全局变量(此处:TYPE
)来控制要使用的函数版本。
myArray=[2,6,7,8,10,4,0,12,14,32,40]; // the condition that occurs only once is (v % 2)
TYPE=0;
doStuff=function(v){return [
// regular function version (TYPE=1)
function(v){
if (v%2) {TYPE=1; // from now on: use simplified function version!
console.log('Hey, I found it and will no longer look for it!')}
console.log('Regular work on value '+v, TYPE);
return v*v},
// simplified function version (TYPE=2)
function(v){console.log('Simplified work on value '+v);
return v*v}
][TYPE](v)};
myArray.forEach(doStuff)
关于javascript - "Remove"评估为 true 时的测试条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57691708/