我有这个功能:
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语句几乎一样。
答案 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]);
}