Compares 2 ios and android versions Announcing the arrival of Valued Associate #679: Cesar...

How widely used is the term Treppenwitz? Is it something that most Germans know?

Why was the term "discrete" used in discrete logarithm?

What to do with chalk when deepwater soloing?

Identifying polygons that intersect with another layer using QGIS?

How to Merge Multiple Columns in to Two Columns based on Column 1 Value?

What LEGO pieces have "real-world" functionality?

Dating a Former Employee

Seeking colloquialism for “just because”

In predicate logic, does existential quantification (∃) include universal quantification (∀), i.e. can 'some' imply 'all'?

What is the logic behind the Maharil's explanation of why we don't say שעשה ניסים on Pesach?

What does an IRS interview request entail when called in to verify expenses for a sole proprietor small business?

What is Arya's weapon design?

What causes the vertical darker bands in my photo?

How to bypass password on Windows XP account?

What does this icon in iOS Stardew Valley mean?

What does "fit" mean in this sentence?

Is it ethical to give a final exam after the professor has quit before teaching the remaining chapters of the course?

What is the role of the transistor and diode in a soft start circuit?

2001: A Space Odyssey's use of the song "Daisy Bell" (Bicycle Built for Two); life imitates art or vice-versa?

English words in a non-english sci-fi novel

Should I use a zero-interest credit card for a large one-time purchase?

Check which numbers satisfy the condition [A*B*C = A! + B! + C!]

List of Python versions

How to align text above triangle figure



Compares 2 ios and android versions



Announcing the arrival of Valued Associate #679: Cesar Manara
Planned maintenance scheduled April 17/18, 2019 at 00:00UTC (8:00pm US/Eastern)





.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty{ margin-bottom:0;
}







0












$begingroup$


Please review and let me know which version is better?
Just trying to find any caveats or better ways to accomplish the a version comparison independent from android and ios.



Formats accepted: '1.0.0' or '1' formats and an operator, e.g: compareVersion('1', '1.2.0', '>')



export function compareVersion(version1, version2, operator) {
const formattedV1 = version1.split(".");
const formattedV2 = version2.split(".");

let diff = 0;

if (formattedV1.length !== formattedV2.length) {
const lengthDiff = formattedV1.length - formattedV2.length;
for (let index = 0; index < Math.abs(lengthDiff); index += 1) {
if (lengthDiff > 0) {
formattedV2.push("0");
} else {
formattedV1.push("0");
}
}
}

for (let index = 0; index < formattedV1.length; index += 1) {
if (diff === 0) {
const v1 = parseInt(formattedV1[index]);
const v2 = parseInt(formattedV2[index]);
if (isNaN(v1) || isNaN(v2)) {
throw new Error("Problem comparing versions: not a valid number");
}
if (v1 < v2) {
diff = -1;
}
if (v1 > v2) {
diff = 1;
}
}
}

switch (operator) {
case "=":
case "==":
return diff === 0;
case ">=":
return diff >= 0;
case "<=":
return diff <= 0;
case ">":
return diff > 0;
case "<":
return diff < 0;

default:
throw new Error("Problem comparing versions");
}
}


OR



export function compareVersions(a, b, operator) {
const aParts = a.split('.');
const bParts = b.split('.');

const pairs = [];

for (let index = 0; index < Math.max(aParts.length, bParts.length); index += 1) {
pairs.push({
a: parseInt(aParts[index]),
b: parseInt(bParts[index]),
});
}

let diff = 0;

pairs.forEach((pair) => {
if (diff === 0) {
if (pair.a > pair.b) {
diff = 1;
}
if (pair.b > pair.a) {
diff = -1;
}
if (!isNaN(pair.a) && isNaN(pair.b)) {
diff = 1;
}
if (isNaN(pair.a) && !isNaN(pair.b)) {
diff = -1;
}
}
});

switch (operator) {
case '=':
case '==':
return diff === 0;
case '>=':
return diff >= 0;
case '<=':
return diff <= 0;
case '>':
return diff > 0;
case '<':
return diff < 0;

default:
throw new Error('Problem comparing versions');
}
}








share







New contributor




Vincent is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.







$endgroup$



















    0












    $begingroup$


    Please review and let me know which version is better?
    Just trying to find any caveats or better ways to accomplish the a version comparison independent from android and ios.



    Formats accepted: '1.0.0' or '1' formats and an operator, e.g: compareVersion('1', '1.2.0', '>')



    export function compareVersion(version1, version2, operator) {
    const formattedV1 = version1.split(".");
    const formattedV2 = version2.split(".");

    let diff = 0;

    if (formattedV1.length !== formattedV2.length) {
    const lengthDiff = formattedV1.length - formattedV2.length;
    for (let index = 0; index < Math.abs(lengthDiff); index += 1) {
    if (lengthDiff > 0) {
    formattedV2.push("0");
    } else {
    formattedV1.push("0");
    }
    }
    }

    for (let index = 0; index < formattedV1.length; index += 1) {
    if (diff === 0) {
    const v1 = parseInt(formattedV1[index]);
    const v2 = parseInt(formattedV2[index]);
    if (isNaN(v1) || isNaN(v2)) {
    throw new Error("Problem comparing versions: not a valid number");
    }
    if (v1 < v2) {
    diff = -1;
    }
    if (v1 > v2) {
    diff = 1;
    }
    }
    }

    switch (operator) {
    case "=":
    case "==":
    return diff === 0;
    case ">=":
    return diff >= 0;
    case "<=":
    return diff <= 0;
    case ">":
    return diff > 0;
    case "<":
    return diff < 0;

    default:
    throw new Error("Problem comparing versions");
    }
    }


    OR



    export function compareVersions(a, b, operator) {
    const aParts = a.split('.');
    const bParts = b.split('.');

    const pairs = [];

    for (let index = 0; index < Math.max(aParts.length, bParts.length); index += 1) {
    pairs.push({
    a: parseInt(aParts[index]),
    b: parseInt(bParts[index]),
    });
    }

    let diff = 0;

    pairs.forEach((pair) => {
    if (diff === 0) {
    if (pair.a > pair.b) {
    diff = 1;
    }
    if (pair.b > pair.a) {
    diff = -1;
    }
    if (!isNaN(pair.a) && isNaN(pair.b)) {
    diff = 1;
    }
    if (isNaN(pair.a) && !isNaN(pair.b)) {
    diff = -1;
    }
    }
    });

    switch (operator) {
    case '=':
    case '==':
    return diff === 0;
    case '>=':
    return diff >= 0;
    case '<=':
    return diff <= 0;
    case '>':
    return diff > 0;
    case '<':
    return diff < 0;

    default:
    throw new Error('Problem comparing versions');
    }
    }








    share







    New contributor




    Vincent is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
    Check out our Code of Conduct.







    $endgroup$















      0












      0








      0





      $begingroup$


      Please review and let me know which version is better?
      Just trying to find any caveats or better ways to accomplish the a version comparison independent from android and ios.



      Formats accepted: '1.0.0' or '1' formats and an operator, e.g: compareVersion('1', '1.2.0', '>')



      export function compareVersion(version1, version2, operator) {
      const formattedV1 = version1.split(".");
      const formattedV2 = version2.split(".");

      let diff = 0;

      if (formattedV1.length !== formattedV2.length) {
      const lengthDiff = formattedV1.length - formattedV2.length;
      for (let index = 0; index < Math.abs(lengthDiff); index += 1) {
      if (lengthDiff > 0) {
      formattedV2.push("0");
      } else {
      formattedV1.push("0");
      }
      }
      }

      for (let index = 0; index < formattedV1.length; index += 1) {
      if (diff === 0) {
      const v1 = parseInt(formattedV1[index]);
      const v2 = parseInt(formattedV2[index]);
      if (isNaN(v1) || isNaN(v2)) {
      throw new Error("Problem comparing versions: not a valid number");
      }
      if (v1 < v2) {
      diff = -1;
      }
      if (v1 > v2) {
      diff = 1;
      }
      }
      }

      switch (operator) {
      case "=":
      case "==":
      return diff === 0;
      case ">=":
      return diff >= 0;
      case "<=":
      return diff <= 0;
      case ">":
      return diff > 0;
      case "<":
      return diff < 0;

      default:
      throw new Error("Problem comparing versions");
      }
      }


      OR



      export function compareVersions(a, b, operator) {
      const aParts = a.split('.');
      const bParts = b.split('.');

      const pairs = [];

      for (let index = 0; index < Math.max(aParts.length, bParts.length); index += 1) {
      pairs.push({
      a: parseInt(aParts[index]),
      b: parseInt(bParts[index]),
      });
      }

      let diff = 0;

      pairs.forEach((pair) => {
      if (diff === 0) {
      if (pair.a > pair.b) {
      diff = 1;
      }
      if (pair.b > pair.a) {
      diff = -1;
      }
      if (!isNaN(pair.a) && isNaN(pair.b)) {
      diff = 1;
      }
      if (isNaN(pair.a) && !isNaN(pair.b)) {
      diff = -1;
      }
      }
      });

      switch (operator) {
      case '=':
      case '==':
      return diff === 0;
      case '>=':
      return diff >= 0;
      case '<=':
      return diff <= 0;
      case '>':
      return diff > 0;
      case '<':
      return diff < 0;

      default:
      throw new Error('Problem comparing versions');
      }
      }








      share







      New contributor




      Vincent is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.







      $endgroup$




      Please review and let me know which version is better?
      Just trying to find any caveats or better ways to accomplish the a version comparison independent from android and ios.



      Formats accepted: '1.0.0' or '1' formats and an operator, e.g: compareVersion('1', '1.2.0', '>')



      export function compareVersion(version1, version2, operator) {
      const formattedV1 = version1.split(".");
      const formattedV2 = version2.split(".");

      let diff = 0;

      if (formattedV1.length !== formattedV2.length) {
      const lengthDiff = formattedV1.length - formattedV2.length;
      for (let index = 0; index < Math.abs(lengthDiff); index += 1) {
      if (lengthDiff > 0) {
      formattedV2.push("0");
      } else {
      formattedV1.push("0");
      }
      }
      }

      for (let index = 0; index < formattedV1.length; index += 1) {
      if (diff === 0) {
      const v1 = parseInt(formattedV1[index]);
      const v2 = parseInt(formattedV2[index]);
      if (isNaN(v1) || isNaN(v2)) {
      throw new Error("Problem comparing versions: not a valid number");
      }
      if (v1 < v2) {
      diff = -1;
      }
      if (v1 > v2) {
      diff = 1;
      }
      }
      }

      switch (operator) {
      case "=":
      case "==":
      return diff === 0;
      case ">=":
      return diff >= 0;
      case "<=":
      return diff <= 0;
      case ">":
      return diff > 0;
      case "<":
      return diff < 0;

      default:
      throw new Error("Problem comparing versions");
      }
      }


      OR



      export function compareVersions(a, b, operator) {
      const aParts = a.split('.');
      const bParts = b.split('.');

      const pairs = [];

      for (let index = 0; index < Math.max(aParts.length, bParts.length); index += 1) {
      pairs.push({
      a: parseInt(aParts[index]),
      b: parseInt(bParts[index]),
      });
      }

      let diff = 0;

      pairs.forEach((pair) => {
      if (diff === 0) {
      if (pair.a > pair.b) {
      diff = 1;
      }
      if (pair.b > pair.a) {
      diff = -1;
      }
      if (!isNaN(pair.a) && isNaN(pair.b)) {
      diff = 1;
      }
      if (isNaN(pair.a) && !isNaN(pair.b)) {
      diff = -1;
      }
      }
      });

      switch (operator) {
      case '=':
      case '==':
      return diff === 0;
      case '>=':
      return diff >= 0;
      case '<=':
      return diff <= 0;
      case '>':
      return diff > 0;
      case '<':
      return diff < 0;

      default:
      throw new Error('Problem comparing versions');
      }
      }






      javascript beginner react-native





      share







      New contributor




      Vincent is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.










      share







      New contributor




      Vincent is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.








      share



      share






      New contributor




      Vincent is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.









      asked 3 mins ago









      VincentVincent

      1




      1




      New contributor




      Vincent is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.





      New contributor





      Vincent is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.






      Vincent is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.






















          0






          active

          oldest

          votes












          Your Answer






          StackExchange.ifUsing("editor", function () {
          StackExchange.using("externalEditor", function () {
          StackExchange.using("snippets", function () {
          StackExchange.snippets.init();
          });
          });
          }, "code-snippets");

          StackExchange.ready(function() {
          var channelOptions = {
          tags: "".split(" "),
          id: "196"
          };
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function() {
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled) {
          StackExchange.using("snippets", function() {
          createEditor();
          });
          }
          else {
          createEditor();
          }
          });

          function createEditor() {
          StackExchange.prepareEditor({
          heartbeatType: 'answer',
          autoActivateHeartbeat: false,
          convertImagesToLinks: false,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: null,
          bindNavPrevention: true,
          postfix: "",
          imageUploader: {
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          },
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          });


          }
          });






          Vincent is a new contributor. Be nice, and check out our Code of Conduct.










          draft saved

          draft discarded


















          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodereview.stackexchange.com%2fquestions%2f217593%2fcompares-2-ios-and-android-versions%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown

























          0






          active

          oldest

          votes








          0






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes








          Vincent is a new contributor. Be nice, and check out our Code of Conduct.










          draft saved

          draft discarded


















          Vincent is a new contributor. Be nice, and check out our Code of Conduct.













          Vincent is a new contributor. Be nice, and check out our Code of Conduct.












          Vincent is a new contributor. Be nice, and check out our Code of Conduct.
















          Thanks for contributing an answer to Code Review Stack Exchange!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid



          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.


          Use MathJax to format equations. MathJax reference.


          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodereview.stackexchange.com%2fquestions%2f217593%2fcompares-2-ios-and-android-versions%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          Popular posts from this blog

          is 'sed' thread safeWhat should someone know about using Python scripts in the shell?Nexenta bash script uses...

          How do i solve the “ No module named 'mlxtend' ” issue on Jupyter?

          Pilgersdorf Inhaltsverzeichnis Geografie | Geschichte | Bevölkerungsentwicklung | Politik | Kultur...