是否有更好的方法来处理这个函数与多个if语句几乎相同?

时间:2017-03-28 12:15:52

标签: javascript if-statement typescript

我有这个功能:

private addAdditionalResults(resultsToAdd: any) {
    if(!isNaN(resultsToAdd.xx) && this.x.length > 0)
        this.x.unshift(resultsToAdd.xx);
    if(!isNaN(resultsToAdd.yy) && this.y.length > 0)
        this.y.unshift(resultsToAdd.yy);
    if(!isNaN(resultsToAdd.zz) && this.z.length > 0)
        this.z.unshift(resultsToAdd.zz);
 }

x,y,z是数字数组。 resultsToAdd是一个变量为xx,yy,zz的对象,它可以是与NaN不同的变量。反正有没有使这段代码更漂亮?这些if语句几乎一样。

2 个答案:

答案 0 :(得分:0)

如果您事先知道密钥并且它们遵循某种模式,您可以通过以下方式缩短密钥:

var variables = ['x','y','z'];
var that = this;
for (var key in variables) {
    if (!isNaN(resultsToAdd[key + key]) && that[key].length > 0) {
         that[key].unshift(resultsToAdd[key + key])
    }
}

答案 1 :(得分:0)

您可以在函数内部创建带有数组的变量,然后迭代它们。但是这会因为循环而影响你的程序响应。

results = array(resultsToAdd.xx, resultsToAdd.yy, resultsToAdd.zz);
numbers = array(this.x, this.y, this.z);

for(i = 0; i < results.length; i++){
    if(!isNaN(results[i]) && numbers[i] > 0)
        numbers[i].unshift(results[i]);
}