AGd*_*dev 2 javascript switch-statement
在 switch 语句内对数组进行过滤的正确方法是什么
let filteredMachines = (filterTerm,filterField) => {
switch (filterField) {
case 'NomAppareil':this.props.machines.filter(machine => {
return machine.nomAppareil === filterTerm;
});
break;
case 'CodeAppareil':this.props.machines.filter(machine => {
return machine.codeAppareil === filterTerm;
});
break;
case 'NomClient':this.props.machines.filter(machine => {
return machine.nomClient === filterTerm;
});
break;
case 'CodeClient':this.props.machines.filter(machine => {
console.log('inside CodeClient ='+JSON.stringify(machine));
return (machine.codeClient == filterTerm);
});
break;
case 'NoSerie':this.props.machines.filter(machine => {
return machine.noSerie === filterTerm;
});
break;
default: return this.props.machines;
}
};
Run Code Online (Sandbox Code Playgroud)
编辑:我找到了下面给出的工作解决方案
let filteredMachines = machines.filter((machine) =>{
switch (filterField) {
case 'NomAppareil': return machine.nomAppareil === filterTerm;
case 'CodeAppareil': return machine.codeAppareil === filterTerm;
case 'NomClient': return machine.nomClient === filterTerm;
case 'CodeClient': return machine.codeClient === filterTerm;
case 'NoSerie': return machine.noSerie === filterTerm;
default: return true;
}
Run Code Online (Sandbox Code Playgroud)
});
基本上你需要返回过滤后的数组(因此结果undefined),然后你可以省略break语句。
case 'NomAppareil':
return this.props.machines.filter(machine => {
// ^^^^^^
return machine.nomAppareil === filterTerm;
});
// break;
Run Code Online (Sandbox Code Playgroud)
或者使用Set代替switch语句。
let filteredMachines = (filterTerm, filterField) => {
var set = new Set(['NomAppareil', 'CodeAppareil', 'NomClient', 'CodeClient', 'NoSerie']);
return set.has(filterField)
? this.props.machines.filter(machine => machine[filterField] === filterTerm)
: this.props.machines;
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4068 次 |
| 最近记录: |