Javascript: array.push () только нажатие последней строки из исходного массива в цикле for

Это функция, которую я создал некоторое время назад, и я вполне доволен. Это не чувствительно к регистру - это удобно. Кроме того, если запрошенный QS не существует, он просто возвращает пустую строку.

Я использую сжатую версию этого.

Я уверен, что это может быть оптимизировано или сделано по-другому, чтобы работать быстрее, но это всегда отлично работает для того, что мне нужно.

g2]

Наслаждайтесь.

function getQSP(sName, sURL) {
    var theItmToRtn = "";
    var theSrchStrg = location.search;
    if (sURL) theSrchStrg = sURL;
    var sOrig = theSrchStrg;
    theSrchStrg = theSrchStrg.toUpperCase();
    sName = sName.toUpperCase();
    theSrchStrg = theSrchStrg.replace("?", "&") theSrchStrg = theSrchStrg + "&";
    var theSrchToken = "&" + sName + "=";
    if (theSrchStrg.indexOf(theSrchToken) != -1) {
        var theSrchTokenLth = theSrchToken.length;
        var theSrchTokenLocStart = theSrchStrg.indexOf(theSrchToken) + theSrchTokenLth;
        var theLocOfNextAndSign = theSrchStrg.indexOf("&", theSrchTokenLocStart);
        theItmToRtn = unescape(sOrig.substring(theSrchTokenLocStart, theLocOfNextAndSign));
    }
    return unescape(theItmToRtn);
}
0
задан Harry Grewal 13 July 2018 в 18:38
поделиться

2 ответа

Правильно ли разделение элементов массивов, похоже, разрешает проблему?

    var UpperCoherenceLimit = 9.99;
    var LowerCoherenceLimit = 4.98;
    var CollectedValue = ["1.7865", "3.7865", "4.786532564000", "5.7865", "6.7865", "7.7865"];
    var CreatedOn = ["7/1/2018 12:00:00 AM", "7/2/2018 12:00:00 AM", "7/3/2018 12:00:00 AM", "7/4/2018 12:00:00 AM", "7/5/2018 12:00:00 AM", "7/7/2018 12:00:00 AM"];
    var SkippedValueList = [];
    var oCollectedValue = [];
    var oCreatedOn = [];
    var DisableCoherenceError = true;

    for (var i = 0; i < CollectedValue.length; i++)
    {
        if(CollectedValue[i] > UpperCoherenceLimit || CollectedValue[i] < LowerCoherenceLimit)
        {
            if(UpperCoherenceLimit != LowerCoherenceLimit)
            {
                SkippedValueList.push(CollectedValue[i])
            }
        }
        else
        {
            oCollectedValue.push(CollectedValue[i])
            oCreatedOn.push(CreatedOn[i])
        }
    }
    
    console.log(oCollectedValue);
    console.log(oCreatedOn);

Javascript автоматически будет делать приведение типов при сравнении чисел со строками, но вы должны также рассмотреть возможность синтаксического анализа ваших строк.
2
ответ дан Jonathan Hamel 17 August 2018 в 12:16
поделиться
  • 1
    Дело в том, что он сказал, что получает идеальные значения в массиве oCollectedValue. Как это возможно, если разделитель запятой в объявлении массива действительно является проблемой здесь? – silencedogood 13 July 2018 в 18:32

Проходит следующий тест:

require('chai').should();

describe('Arrays', () => {
  it('needs commas', () => {
    Route = "";
    var UpperCoherenceLimit = 9.99;
    var LowerCoherenceLimit = 4.98;
    var CollectedValue = ["1.7865", "3.7865", "4.786532564000", "5.7865", "6.7865", "7.7865"];
    var CreatedOn = ["7/1/2018 12:00:00 AM", "7/2/2018 12:00:00 AM", "7/3/2018 12:00:00 AM", "7/4/2018 12:00:00 AM", "7/5/2018 12:00:00 AM", "7/7/2018 12:00:00 AM"];
    var SkippedValueList = [];
    var oCollectedValue = [];
    var oCreatedOn = [];
    var DisableCoherenceError = true;

    for (var i = 0; i < CollectedValue.length; i++) {
      if (CollectedValue[i] > UpperCoherenceLimit || CollectedValue[i] < LowerCoherenceLimit) {
        if (UpperCoherenceLimit != LowerCoherenceLimit) {
          if (DisableCoherenceError == false) {
            SkippedValueList.push(CollectedValue[i])
          }
          else {
            SkippedValueList.push(CollectedValue[i])
          }
        }
      }
      else {
        oCollectedValue.push(CollectedValue[i])
        oCreatedOn.push(CreatedOn[i])
      }
    }

    if (oCollectedValue.length == 0) {
      Route = 'SKIP';
    }
    oCreatedOn.length.should.equal(3);
  });
});

Итак, код, который вы опубликовали, не отражает проблему, с которой вы столкнулись. Пожалуйста, дайте нам Минимальный, Полный и Подтверждаемый Пример

0
ответ дан Guillaume CR 17 August 2018 в 12:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: