在不使用临时变量的情况下重用已计算的表达式

时间:2016-06-15 15:54:15

标签: javascript

作为我正在处理的更大的JavaScript项目的一部分,我必须处理几个固定宽度的文本文件,从每行文件中提取子字符串,并将文本添加到数组中,除非该文本已被提取。这提出了一个我无法找到答案的奇怪问题。

我需要使用substring()提取字符串,测试提取的表达式是否是数组的一部分,然后将计算后的表达式添加到数组中。我可以通过两种方式对此进行编码。第一种是两次评估子字符串,如下所示:

var nextLine = 'Really long string that I only need part of: ID123456';
var idArray = [];

if (idArray.indexOf (nextLine.substring (45)) === -1) {
    idArray.push (nextLine.substring (45));
}

第二种方法是使用临时变量来保存表达式的结果:

var nextLine = 'Really long string that I only need part of: ID123456';
var tempStr = nextLine.substring (45);
var idArray = [];

if (idArray.indexOf (tempStr) === -1) {
    idArray.push (tempStr);
}

第一个片段涉及两次评估nextLine.substring(45),而第二个片段使用仅使用两次的临时变量。这些都不是真的吸引我,但我不知道,并且没有能够找到任何其他方法。

是否有一些技巧可以测试这个表达式并在不进行两次评估而不使用临时变量的情况下推送它?

1 个答案:

答案 0 :(得分:0)

如果变量确实困扰你,请重新排列并将其放入范围内。

var nextLine = 'Really long string that I only need part of: ID123456';
var idArray = []; {
    var tempStr = nextLine.substring(45);
    if (idArray.indexOf(tempStr) === -1) {
        idArray.push(tempStr);
    }
}

老实说,不要把时间浪费在小事上。