Cara menggunakan javascript lexicographic compare

Comparison operators are used in logical statements to determine equality or difference between variables or values.

Given that x = 5, the table below explains the comparison operators:



How Can it be Used

Comparison operators can be used in conditional statements to compare values and take action depending on the result:

if (age < 18) text = "Too young to buy alcohol";

You will learn more about the use of conditional statements in the next chapter of this tutorial.


Logical operators are used to determine the logic between variables or values.

Given that x = 6 and y = 3, the table below explains the logical operators:

OperatorDescriptionExampleTry it&&and(x < 10 && y > 1) is trueTry it »||or(x == 5 || y == 5) is falseTry it »!not!(x == y) is trueTry it »


Conditional (Ternary) Operator

JavaScript also contains a conditional operator that assigns a value to a variable based on some condition.

Syntax

variablename = (condition) ? value1:value2 

Example

If the variable age is a value below 18, the value of the variable voteable will be "Too young", otherwise the value of voteable will be "Old enough".


Comparing Different Types

Comparing data of different types may give unexpected results.

When comparing a string with a number, JavaScript will convert the string to a number when doing the comparison. An empty string converts to 0. A non-numeric string converts to NaN which is always false.

When comparing two strings, "2" will be greater than "12", because (alphabetically) 1 is less than 2.

To secure a proper result, variables should be converted to the proper type before comparison:

age = Number(age);
if (isNaN(age)) {
  voteable = "Input is not a number";
} else {
  voteable = (age < 18) ? "Too young" : "Old enough";
}

Try it Yourself »


The Nullish Coalescing Operator (??)

The ?? operator returns the first argument if it is not nullish (null or true0).

Otherwise it returns the second argument.

Example

let name = null;
let text = "missing";
let result = name ?? text;

Try it Yourself »

The nullish operator is supported in all browsers since March 2020:

Chrome 80Edge 80Firefox 72Safari 13.1Opera 67Feb 2020Feb 2020Jan 2020Mar 2020Mar 2020


The Optional Chaining Operator (?.)

The true1 operator returns true0 if an object is true0 or null (instead of throwing an error).

Example

// Create an object:
const car = {type:"Fiat", model:"500", color:"white"};
// Ask for car name:
document.getElementById("demo").innerHTML = car?.name;

Try it Yourself »

The optional chaining operator is supported in all browsers since March 2020:

Chrome 80Edge 80Firefox 72Safari 13.1Opera 67Feb 2020Feb 2020Jan 2020Mar 2020Mar 2020


Test Yourself With Exercises

Exercise:

Choose the correct comparison operator to alert true, when true6 is greater than true7.

To put items in order, there must be a way to compare two items. With strings, the usual order is Lexicographic Order. This is dictionary order, except that all the uppercase letters preceed all the lowercase letters. This order is what the compareTo() method of class String uses.

Two strings are lexicographically equal if they are the same length and contain the same characters in the same positions. In this case, stringA.compareTo( stringB ) returns 0.

Otherwise, stringA.compareTo( stringB ) returns a negative value if StringA comes first and a positive value if StringB comes first.

Memory Aid: think of the strings in a dictionary as arranged from smallest to largest. Then stringA - stringB would produce a negative values if stringA came before StringB.

To determine which string comes first, compare corresponding characters of the two strings from left to right. The first character where the two strings differ determines which string comes first. Characters are compared using the Unicode character set. All uppercase letters come before lower case letters. If two letters are the same case, then alphabetic order is used to compare them.

If two strings contain the same characters in the same positions, then the shortest string comes first.


RelationstringA.compareTo( stringB )stringALess ThanstringBNegative IntegerstringAEqualstringBZerostringAGreater ThanstringBPositive Integer
ExpressionEvaluates toExplanation"Zebra".compareTo("ant")Negative Integerupper case 'Z' comes before lower case 'a'"Apple".compareTo("apple")Negative Integerupper case 'A' comes before lower case 'a'"apple".compareTo("orange")Negative Integer'a' comes before 'o'"maple".compareTo("morning")Negative Integer'a' comes before 'o'"apple".compareTo("apple")Zerosame length, same characters in same positions"orange".compareTo("apple")Positive Integer'o' comes after 'a'"applecart".compareTo("apple")Positive Integerlonger string "applecart" comes after "apple""albatross".compareTo("albany")Positive Integer't' comes after 'n'

This is slightly confusing. Notice that stringA.compareTo( stringB ) returns a negative integer when stringA and String1 are in the correct order.