This folder contains prediction-based JS snippets often asked in interviews. Each file contains tricky cases with explanations to strengthen your understanding.
| File Name | Concept Covered |
|---|---|
| 01-variable-hoisting.js | Hoisting of var, let, const |
| 02-closure-pitfall.js | Closures in loop (var vs let) |
| 03-this-arrow.js | this with arrow vs regular functions |
| 04-array-reference.js | Reference vs copy in arrays |
| 05-object-coercion.js | Object keys coercing to string |
| 06-nan-prediction.js | Behavior of NaN and its type |
| 07-typeof-null.js | Why typeof null is "object" |
| 08-implicit-return.js | Implicit return in arrow functions |
| 09-chained-comparison.js | Chained comparisons (<, >) |
| 10-async-await-prediction.js | Execution order with async/await |
| 11-equality-prediction.js | == vs === and coercion |
| 12-undefined-vs-not-defined.js | undefined vs undeclared variables |
| 13-array-hole-vs-undefined.js | Array holes vs undefined |
| 14-in-operator.js | The in operator behavior |
| 15-delete-operator.js | Delete behavior in arrays & objects |
| 16-array-sort-pitfall.js | Pitfalls of default .sort() |
| 17-instanceof-trick.js | instanceof with primitives |
| 18-symbol-key.js | Accessing object keys with Symbols |
| 19-double-negation.js | !! casting to boolean |
| 20-function-length.js | length property of functions |
| 21-default-param-trick.js | Behavior of default parameters |
| 22-iife-prediction.js | Scope with Immediately Invoked Functions |
| 23-map-vs-forEach.js | Return behavior of map vs forEach |
| 24-promise-order.js | Promise microtask execution order |
| 25-promise-vs-settimeout.js | Microtask vs Macrotask queue timing |
| 26-falsy-truthy.js | Truthy and falsy value coercion |
| 27-logical-operators-return.js | Return value of logical operators (` |
| 28-set-vs-array.js | Uniqueness handling in Set vs Array |
| 29-string-number-coercion.js | Coercion between string and number types |
| 30-array-destructuring.js | Array destructuring, skipping & defaults |
| 31-block-scope-var-let.js | Scope differences between var and let |
| 32-temporal-dead-zone.js | TDZ behavior of let and const |
| 33-arguments-object.js | Link between arguments and parameters |
| 34-json-parse-error.js | JSON parsing syntax limitations |
| 35-nullish-coalescing.js | ?? operator vs ` |
| 36-event-loop-blocking.js | How blocking code delays timers |
| 37-constructor-return.js | Returning object from constructor function |
| 38-array-flat-depth.js | Array flattening with flat() method |
| 39-symbol-vs-string-key.js | Symbol keys and object iteration |
| 40-optional-chaining.js | Safe nested property access with ?. |
| 41-set-behavior.js | Uniqueness in Set with number vs string |
| 42-bigint-mystery.js | Mixing BigInt with Number throws error |
| 43-typeof-function.js | typeof returns 'function' for declared funcs |
| 44-primitive-immutability.js | Immutability of primitive strings |
| 45-this-default-binding.js | Default binding of this in non-method call |
| 46-parseint-tricky.js | parseInt + map behavior with radix confusion |
| 47-parseint-map-trap.js | map(parseInt) pitfall due to index → radix |
| 48-date-equality.js | Comparing Date objects (reference vs value) |
| 49-for-in-array.js | for...in iterates array + custom keys |
| 50-function-name-property.js | Accessing function's name property |
| 51-class-vs-function.js | Differences between class and function call |
| 52-array-concat-mutation.js | concat() returns new array, doesn't mutate |
| 53-array-fill-reference.js | .fill(obj) copies reference, not deep clone |
| 54-function-declaration-hoisting.js | Function declarations vs expressions hoisting |
| 55-array-reduce-trap.js | Reduce throws if no initial value on empty array |
| 56-array-reverse-mutation.js | .reverse() mutates the original array |
| 57-json-stringify-order.js | JSON.stringify preserves insertion key order |
| 58-object-keys-number-order.js | Numeric keys in object are auto-sorted |
| 59-nested-ternary.js | Nested ternary operator behavior |
| 60-function-expression-name.js | Named function expressions and .name property |
| 61-in-operator-vs-undefined.js | in vs undefined value checking |
| 62-delete-vs-null.js | Difference between delete and setting to null |
| 63-string-from-charcode.js | Generate string characters using ASCII codes |
| 64-array-length-manipulation.js | Truncate array by setting .length manually |
| 65-try-catch-scope.js | Scope of variables inside try...catch |
| 66-label-break.js | Using break with labeled loops |
| 67-function-constructor.js | new Function() constructor behavior |
| 68-void-operator.js | void always returns undefined |
| 69-type-coercion-array.js | Strange coercion with objects and arrays |
| 70-symbol-description.js | Symbol description property usage |
| 71-eval-scope.js | eval accessing outer scope |
| 72-typeof-nan.js | typeof NaN returns "number" |
| 73-bool-vs-bool-obj.js | Boolean vs new Boolean() object coercion |
| 74-empty-array-truthy.js | Empty arrays/objects are always truthy |
| 75-comma-operator.js | Comma operator returns the last evaluated expression |
| 76-bitwise-not-indexof.js | ~indexOf trick for existence checking |
| 77-increment-eval-order.js | a = a++ + ++a evaluation order trap |
| 78-object-key-overwrite.js | Object keys overwrite silently if duplicated |
| 79-primitive-passing.js | Primitive values passed by value |
| 80-reference-passing.js | Objects passed by reference and mutated inside function |
| 81-function-redeclared.js | Later function declarations override earlier ones |
| 82-null-loose-equal.js | null == undefined is true; not equal to 0 or "" |
| 83-array-concat-spread.js | Spread and concat produce similar results |
| 84-boolean-constructor.js | new Boolean(false) is truthy (object) |
| 85-array-sparse-length.js | Sparse array sets length to highest index + 1 |
| 86-empty-return-undefined.js | Function with no return gives undefined |
| 87-new-array-vs-array.js | Array(3) creates holes; [3] creates a value |
| 88-function-prototype-vs-proto.js | .prototype vs .__proto__ explained |
| 89-array-join-empty.js | .join() returns "" on empty arrays |
| 90-symbol-hidden.js | Symbol-keyed properties are hidden from enumeration |
| 91-string-number-plus.js | Number + string results in string coercion |
| 92-string-minus-number.js | String - number coerces to numeric operations |
| 93-string-bracket-access.js | String supports index access |
| 94-date-now-vs-newdate.js | Difference between Date.now() and new Date() |
| 95-parsefloat-trailing.js | parseFloat stops at first invalid character |
| 96-array-isarray.js | Detecting arrays using Array.isArray() |
| 97-infinity-behavior.js | Behavior of Infinity in division |
| 98-undefined-delete.js | delete works only on object props, not declared vars |
| 99-empty-array-bool.js | [] == false due to type coercion |
| 100-function-name-dynamic.js | Function names: declared vs inferred |
| 101-void-operator.js | void operator always returns undefined |
| 102-function-declared-late.js | Function declaration hoisting vs expression timing |
| 103-nan-strict-equal.js | NaN !== NaN; use Object.is for true comparison |
| 104-arguments-vs-rest.js | Difference between arguments and rest params |
| 105-convert-to-boolean.js | !! vs Boolean() casting techniques |
| 106-comparison-null-0.js | Strange comparisons with null and numbers |
| 107-settimeout-zero.js | setTimeout(..., 0) runs after current stack |
| 108-new-regexp-vs-literal.js | Difference between /regex/ and new RegExp() |
| 109-object-method-this.js | Behavior of this inside object method |
| 110-string-split-limit.js | .split() with limit to control parts |
| 111-object-to-primitive.js | How JS coerces objects to primitives |
| 112-json-stringify-order.js | Property order in JSON.stringify |
| 113-instanceof-array.js | instanceof vs Array.isArray |
| 114-delete-array-index.js | delete on array leaves holes |
| 115-object-frozen.js | Object.freeze makes shallow immutability |
| 116-infinity-comparison.js | Comparing Infinity with large numbers and itself |
| 117-function-replace.js | Function can be reassigned unless declared with const |
| 118-array-concat-modify.js | .concat() doesn’t mutate original array |
| 119-symbol-description.js | Symbols can have optional descriptions |
| 120-template-tagged.js | Tagged template literals and custom formatting |
| 121-logical-nullish-diff.js | ll vs ?? behavior with falsy vs nullish values |
| 122-string-pad-start.js | .padStart() for padding strings |
| 123-array-fill-mutate.js | .fill() mutates the original array |
| 124-switch-fallthrough.js | Fallthrough in switch without break |
| 125-eval-scope.js | eval runs in current scope, can modify vars |
| 126-bool-object.js | new Boolean(false) is truthy |
| 127-number-to-string-base.js | .toString(radix) for binary, hex conversions |
| 128-array-reduce-missing-init.js | .reduce() without init uses first item as accumulator |
| 129-parseint-binary.js | parseInt() with radix for different bases |
| 130-locale-compare.js | .localeCompare() for string sorting |
| 131-number-object-compare.js | Comparing number primitives with Number objects |
| 132-typeof-function-instance.js | Functions are objects — typeof vs instanceof |
| 133-array-constructor-confuse.js | new Array(n) creates sparse array |
| 134-object-assign-vs-clone.js | Object.assign does shallow copy only |
| 135-set-equality.js | Set equality is by reference |
| 136-array-from-vs-slice.js | Convert array-like objects using Array.from() |
| 137-async-function-return.js | async functions always return a Promise |
| 138-null-undefined-equal.js | null == undefined but not strictly equal |
| 139-math-round-vs-floor.js | Difference between Math.round() and Math.floor() |
| 140-unary-plus-coerce.js | Unary + coerces value to number |
| 141-array-every-vs-some.js | Difference between .every() and .some() |
| 142-object-key-order.js | Integer keys in objects are sorted numerically |
| 143-promise-catch-finally.js | .finally() runs after both resolve and reject |
| 144-typeof-array.js | Arrays return 'object' from typeof, use isArray |
| 145-function-name-binding.js | Function name is immutable |
| 146-undefined-global-leak.js | Undeclared vars leak to global scope in sloppy mode |
| 147-string-fromcharcode.js | Convert Unicode/ASCII codes to characters |
| 148-replace-callback.js | .replace() with function callback & regex groups |
| 149-instanceof-bound-function.js | .bind() breaks instanceof check |
| 150-proxy-get-trap.js | Using Proxy to customize property access |
| 151-date-parsing-pitfall.js | Date parsing inconsistencies across formats |
| 152-number-epsilon.js | Comparing floating-point numbers with EPSILON |
| 153-regex-lastindex-trap.js | Global regex retains state via .lastIndex |
| 154-function-default-eval.js | Function constructor acts like unsafe eval |
| 155-array-indexof-nan.js | indexOf(NaN) fails; use includes() instead |
| 156-weakmap-garbage.js | WeakMap allows garbage collection of keys |
| 157-arrow-constructor-trap.js | Arrow functions cannot be used as constructors |
| 158-instanceof-custom.js | Override instanceof using Symbol.hasInstance |
| 159-object-entries-vs-fromentries.js | Convert object to/from entries for transformations |
| 160-locale-string-behavior.js | Use toLocaleString() for region-specific display |
| 161-json-parse-bigint.js | BigInt cannot be serialized in JSON |
| 162-array-slice-negative.js | Negative indices in .slice() count from end |
| 163-switch-true-pattern.js | switch(true) for range/conditional branching |
| 164-array-copywithin.js | .copyWithin() copies within array (mutates) |
| 165-destructuring-undefined.js | Destructuring with defaults & undefined handling |
| 166-object-defineproperty.js | Define property with control flags (writable, etc) |
| 167-regex-lookahead.js | Lookahead assertions in regex |
| 168-object-freeze-nested.js | .freeze() is shallow — nested objects still mutable |
| 169-array-every-shortcircuit.js | .every() stops on first false return |
| 170-json-replacer-filter.js | Filter out fields while stringifying JSON |
| 171-array-flat-infinity.js | Flatten arrays to unlimited depth using .flat(Infinity) |
| 172-function-name-overwrite.js | Function name in expression is read-only |
| 173-json-stringify-function.js | Functions & symbols are skipped in JSON.stringify |
| 174-array-indexof-nan.js | NaN not found by indexOf, use .includes() |
| 175-json-parse-reviver.js | Transform parsed values using reviver in JSON.parse |
| 176-for-loop-missing-parts.js | All components in for loop are optional |
| 177-getter-setter-trap.js | Defining and using getter/setter in objects |
| 178-object-spread-skip-symbol.js | Spread syntax skips symbol-keyed properties |
| 179-arguments-callee.js | arguments.callee deprecated in strict mode |
| 180-switch-expression.js | switch uses strict comparison (===) |
| 181-array-push-length.js | .push() returns new array length, not array |
| 182-number-object-compare.js | Comparing Number object with primitive |
| 183-undefined-prop-access.js | Optional chaining prevents crash on undefined props |
| 184-date-parse-format.js | Date.parse() works only on valid ISO formats |
| 185-bitwise-coerce.js | Bitwise NOT ~ coerces values to numbers |
| 186-array-find-vs-filter.js | .find() returns one, .filter() returns all matches |
| 187-parseint-vs-number.js | parseInt vs Number with string input |
| 188-number-leading-zero.js | Leading zeros may result in octal numbers |
| 189-object-hasown-vs-in.js | in checks prototype, hasOwnProperty doesn't |
| 190-number-epsilon-compare.js | Use Number.EPSILON for floating point comparison |
| 191-instanceof-after-bind.js | .bind() breaks instanceof relationship |
| 192-undefined-in-json.js | undefined is omitted from JSON.stringify |
| 193-promise-return-trap.js | .then() accepts both values and Promises |
| 194-object-assign-array.js | Object.assign() copies array index keys |
| 195-switch-expression-eval.js | switch uses strict equality (===) |
| 196-typeof-regex.js | RegExp is of type 'object' |
| 197-array-length-trap.js | Truncating array by setting .length |
| 198-deep-equal-vs-shallow.js | === only checks references, not deep equality |
| 199-async-constructor.js | Class constructors can't be async |
| 200-array-unshift-return.js | .unshift() returns the new array length |
| 201-array-every-empty.js | .every() on empty array returns true |
| 202-array-some-empty.js | .some() on empty array returns false |
| 203-json-parse-date.js | Dates stringify as ISO strings, lose type |
| 204-function-name-anonymous.js | Anonymous functions get name from variable |
| 205-in-operator-array.js | in checks index existence, not value |
| 206-string-match-regex.js | .match() returns null if no match |
| 207-typeof-null-instanceof.js | typeof null is object but not instanceof Object |
| 208-empty-array-typeof.js | typeof [] is 'object' |
| 209-function-hoisting.js | Function declarations are fully hoisted |
| 210-missing-return-undefined.js | Missing return defaults to undefined |
| 211-array-slice-negative-index.js | .slice(-n) counts from end of array |
| 212-object-values-order.js | Object keys: integers first (sorted), then rest |
| 213-number-plus-object.js | Number + object coerces to string |
| 214-parsefloat-space.js | parseFloat ignores spaces |
| 215-date-equality-trap.js | Date objects are not equal by reference |
| 216-json-stringify-method.js | JSON.stringify skips functions and symbols |
| 217-typeof-symbol.js | typeof Symbol() returns 'symbol' |
| 218-eval-vs-function.js | eval vs Function() scoping behavior |
| 219-array-constructor-length.js | Array(n) creates holes, not values |
| 220-comma-expression-assignment.js | Comma expression evaluates all, returns last |
| 221-new-object-vs-literal.js | new Object() vs {} — both create objects |
| 222-nan-number-check.js | NaN !== NaN — use Number.isNaN() |
| 223-symbol-hidden-properties.js | Symbol-keyed props are hidden from loops |
| 224-regex-lastindex.js | Regex with /g retains lastIndex |
| 225-string-escape-trick.js | Escape sequences like \n, \t in strings |
| 226-function-return-missing.js | Arrow functions returning object need () |
| 227-parseint-leading-zero.js | Legacy octal parsing with leading zero |
| 228-array-some-holes.js | .some() skips holes, doesn't see them as undefined |
| 229-json-stringify-circular.js | Circular objects throw on JSON.stringify() |
| 230-string-number-subtraction.js | "string" - number → coerces string to number |
| 231-async-function-stack.js | Async functions throw errors wrapped in Promises |
| 232-boolean-index-trick.js | Booleans as array index: true → 1, false → 0 |
| 233-object-compare-json.js | JSON.stringify() order affects object comparison |
| 234-destructuring-undefined.js | Destructuring undefined throws error |
| 235-function-arity-trick.js | Function.length counts params before default assignment |
| 236-infinite-recursion-stack.js | Infinite recursion → max call stack error |
| 237-string-coercion-object.js | Object + string = [object Object]string |
| 238-undefined-property-access.js | Optional chaining prevents errors on undefined access |
| 239-delete-nonexistent.js | delete on nonexistent keys returns true |
| 240-array-sort-numbers.js | Default sort uses string comparison, not numeric |
| 241-settimeout-this.js | this in setTimeout() is global (not object) |
| 242-array-find-index.js | .findIndex() returns -1 if not found |
| 243-function-name-arrow.js | Arrow functions don’t bind name keyword manually |
| 244-number-leading-plus.js | Unary + converts string to number or NaN |
| 245-boolean-string.js | Booleans convert to string in template literals |
| 246-number-epsilon-compare.js | Compare floats safely with Number.EPSILON |
| 247-new-date-vs-now.js | Date.now() → timestamp; new Date() → object |
| 248-for-loop-declare-once.js | let in loop creates block-scoped variable |
| 249-object-undefined-access.js | Accessing non-existent property returns undefined |
| 250-delete-return.js | delete returns true/false depending on success |
| 251-array-includes-nan.js | .includes() detects NaN, unlike .indexOf() |
| 252-new-array-length.js | new Array(n) creates sparse arrays |
| 253-array-index-as-string.js | Object keys from numbers are stored as strings |
| 254-template-nested.js | Template literals support nested expressions |
| 255-json-parse-null.js | JSON.parse("null") returns null |
| 256-switch-type-match.js | switch uses strict equality (===) |
| 257-delete-from-array.js | delete creates holes in arrays, doesn’t shift |
| 258-empty-string-falsy.js | Empty string ("") is falsy |
| 259-number-equal-vs-object.js | Primitives vs wrapper object in equality |
| 260-object-key-space.js | Keys with spaces must be quoted or bracket-accessed |
| 261-in-operator-array.js | in operator on arrays checks for index presence |
| 262-promise-reject-then.js | .then() can take 2 args: resolve and reject handler |
| 263-parseint-hex.js | parseInt parses hex strings with 0x prefix |
| 264-array-flat-default.js | .flat() defaults to depth 1 |
| 265-null-equal-false.js | null == false is false; undefined == null is true |
| 266-async-function-error.js | Errors in async functions become rejected promises |
| 267-promise-return-chain.js | Returned value flows down .then() chain |
| 268-isfinite-trap.js | isFinite() coerces; Number.isFinite() doesn’t |
| 269-string-trim.js | .trim() removes whitespace from ends of string |
| 270-in-operator-object.js | in checks own + inherited properties |
| 271-null-object-lookup.js | Accessing property on null throws error |
| 272-optional-chaining-safe.js | Use ?. to avoid accessing properties on null |
| 273-string-repeat.js | .repeat() repeats string N times |
| 274-array-copy-slice.js | .slice() makes a shallow array copy |
| 275-json-parse-date.js | JSON.parse() doesn’t convert date strings |
| 276-unary-minus.js | Unary - converts to number and negates |
| 277-array-every-shortcircuit.js | .every() stops checking at first false |
| 278-array-some-shortcircuit.js | .some() stops checking at first true |
| 279-logical-or-default.js | ll returns first truthy value |
| 280-nullish-coalescing-default.js | ?? returns fallback only if null/undefined |
| 281-typeof-array.js | Arrays return "object" with typeof; use isArray |
| 282-empty-string-number.js | Empty string coerces to 0 in numeric comparison |
| 283-double-bang-null.js | !! for boolean casting |
| 284-boolean-constructor-trap.js | new Boolean(false) is still truthy |
| 285-spread-overwrites.js | Spread later keys overwrite previous ones |
| 286-function-defaults-undefined.js | Only undefined triggers default param |
| 287-nested-array-to-string.js | Nested arrays flatten via .toString() |
| 288-number-leading-zero.js | Strings with leading 0s may be legacy octal |
| 289-float-modulo.js | Modulo operator works with floats |
| 290-increment-prefix-vs-postfix.js | ++a vs a++ return value difference |
| 291-parsefloat-empty.js | parseFloat('') returns NaN |
| 292-array-index-as-string.js | Array indices are stored as strings in object keys |
| 293-logical-and-return.js | && returns first falsy or last truthy |
| 294-logical-or-return.js | ll returns first truthy |
| 295-function-return-undefined.js | No return yields undefined |
| 296-async-return-value.js | async always returns a Promise |
| 297-infinite-loop-float.js | Floating point increment may never hit target |
| 298-json-stringify-symbol.js | JSON.stringify() ignores Symbol keys |
| 299-array-indexof-nan.js | indexOf(NaN) fails due to NaN !== NaN |
| 300-const-object-mutate.js | const objects can mutate; can't be reassigned |
| 301-math-max-empty.js | Math.max() with no args returns -Infinity |
| 302-math-min-empty.js | Math.min() with no args returns Infinity |
| 303-function-hoisting-overwrite.js | Later function declarations override earlier |
| 304-promise-then-return.js | .then() returns a new Promise |
| 305-loop-settimeout-var.js | Closure issue in loop with var |
| 306-loop-settimeout-let.js | Using let fixes closure problem in loops |
| 307-prototype-method-add.js | Dynamically add method to prototype |
| 308-typeof-symbol.js | typeof Symbol() returns "symbol" |
| 309-console-log-undefined.js | Accessing undeclared variable throws error |
| 310-ternary-nested-confuse.js | Nested ternary expressions are tricky |
| 311-in-operator-on-array.js | in checks array indices, not values |
| 312-string-repeat-negative.js | .repeat() with negative throws error |
| 313-array-sort-default.js | Default .sort() sorts as strings |
| 314-null-instanceof-object.js | null instanceof Object is false |
| 315-regex-lastindex.js | Reusing global RegExp can cause lastIndex issues |
| 316-set-has-naN.js | Set treats all NaN as equal |
| 317-function-argument-overwrite.js | Local variable can overwrite function param |
| 318-spread-string.js | Spreading string creates character array |
| 319-nested-array-access.js | Accessing deep arrays with optional chaining |
| 320-number-plus-object.js | Adding number + object uses valueOf() or toString() |
| 321-add-string-minus-number.js | 1 + "1" - 1 → 10 due to coercion |
| 322-bang-string-false.js | !!"false" → true (non-empty string is truthy) |
| 323-new-number-typeof.js | typeof new Number(5) → "object" |
| 324-typeof-null.js | typeof null → "object" (legacy bug) |
| 325-nan-equality.js | NaN === NaN → false |
| 326-array-reference-equality.js | [1,2] === [1,2] → false (different references) |
| 327-empty-array-equality.js | [] == false → true (coercion to "") |
| 328-async-fn-returns-promise.js | Async functions always return a Promise |
| 329-json-parse-number.js | JSON.parse("5") → 5 (number, not string) |
| 330-float-precision-error.js | 0.1 + 0.2 !== 0.3 → true (floating point issue) |
| 331-array-hole-map.js | .map() skips holes in arrays |
| 332-json-parse-date.js | JSON.parse turns dates into strings |
| 333-for-in-array.js | for...in iterates over array indexes |
| 334-this-in-arrow.js | Arrow functions don’t have their own this |
| 335-number-epsilon.js | Number.EPSILON helps compare floats precisely |
| 336-symbol-description.js | Symbol('desc').description gets description |
| 337-parseint-with-radix.js | Always pass radix to parseInt for safety |
| 338-instanceof-vs-typeof.js | Difference between instanceof and typeof |
| 339-function-length.js | .length shows number of declared parameters |
| 340-string-pad.js | .padStart() and .padEnd() pad strings |
| 341-object-key-order.js | Object keys maintain insertion order |
| 342-parseint-radix-trap.js | map(parseInt) causes unexpected results |
| 343-math-max-empty.js | Math.max() without args returns -Infinity |
| 344-undefined-key-in-object.js | undefined becomes string key in object |
| 345-object-freeze-mutate.js | Frozen objects can’t be mutated |
| 346-array-concat-object.js | Concatenating object to array preserves structure |
| 347-equality-object-vs-string.js | Object is not equal to string '[object Object]' |
| 348-json-parse-date.js | JSON.parse() of date returns string not Date |
| 349-array-hole-vs-undefined.js | Array hole ≠ undefined (check with i in arr) |
| 350-function-name.js | Function name still shows inner named function |
| 351-array-keys-iterator.js | Array .keys() returns an iterator of indexes |
| 352-typeof-null.js | typeof null is 'object' |
| 353-array-reverse-mutation.js | reverse() mutates original array |
| 354-delete-array-index.js | delete leaves a hole in array |
| 355-arguments-object.js | arguments and parameters are linked |
| 356-function-hoisting.js | Function declarations are hoisted |
| 357-function-expression-hoisting.js | Function expressions are not hoisted |
| 358-instanceof-array.js | [] instanceof Array and Object both true |
| 359-array-flat-depth.js | flat(n) flattens array to depth n |
| 360-tofixed-type.js | toFixed() returns string, not number |
| 361-infinity-comparisons.js | Infinity comparisons and division by zero |
| 362-nan-comparisons.js | NaN not equal to itself, use Object.is() |
| 363-parseint-vs-number.js | parseInt vs Number on string input |
| 364-parseint-radix.js | Using radix with parseInt to control base |
| 365-unicode-string-length.js | Emoji has length 2 due to UTF-16 surrogate pairs |
| 366-template-literals-expr.js | Template literals evaluate expressions inside ${} |
| 367-optional-chaining.js | Safe access with optional chaining |
| 368-nullish-coalescing.js | ?? only replaces null or undefined |
| 369-bitwise-not-trick.js | ~index trick to check for -1 in indexOf |
| 370-unary-plus.js | Unary + converts to number |
| 371-typeof-null.js | typeof null is 'object', a long-standing bug |
| 372-typeof-nan.js | typeof NaN returns 'number' |
| 373-double-negation.js | Use !!value to convert to boolean |
| 374-zero-equality.js | 0 === -0 is true, but Object.is(0, -0) is false |
| 375-string-concat-trick.js | + operator does implicit type coercion |
| 376-number-isnan-vs-isnan.js | isNaN() coerces, Number.isNaN() is strict |
| 377-boolean-conversion.js | Truthy and falsy values in Boolean conversion |
| 378-void-operator.js | void returns undefined always |
| 379-instanceof-vs-typeof.js | instanceof vs typeof to check types |
| 380-equality-with-arrays.js | Arrays are compared by reference, not value |
| 381-array-flat.js | flat(n) flattens an array up to depth n |
| 382-array-flat-infinity.js | flat(Infinity) completely flattens nested arrays |
| 383-array-from-set.js | Convert Set to Array using Array.from() |
| 384-object-keys-order.js | Integer keys are ordered numerically in objects |
| 385-in-operator.js | Checks if a property/index exists in object/array |
| 386-delete-array-index.js | delete creates a hole, doesn't change array length |
| 387-optional-chaining.js | Avoids errors when accessing deep nested properties |
| 388-nullish-coalescing.js | ?? returns right side only if left is null/undefined |
| 389-label-loop-break.js | Use labels to break nested loops |
| 390-generator-function.js | function* creates a generator that yields values |
| 391-async-function-return.js | Async functions return Promises |
| 392-await-non-promise.js | Await can be used on non-promises too |
| 393-async-await-error.js | Errors in async functions are caught with .catch() |
| 394-promise-all.js | Promise.all() resolves when all promises resolve |
| 395-promise-race.js | Promise.race() resolves/rejects with first settled one |
| 396-settimeout-0.js | setTimeout(..., 0) runs after current call stack |
| 397-async-loop-trap.js | var causes closure issues inside async loops |
| 398-async-loop-let.js | let scopes each iteration correctly in loops |
| 399-await-in-loop.js | Awaiting inside loop runs sequentially |
| 400-top-level-await.mjs | Top-level await works in modules (.mjs) |
| 401-class-basic.js | Class with constructor and method |
| 402-class-inheritance.js | Class inheritance and super() usage |
| 403-static-method.js | Static method in a class |
| 404-getter-setter.js | Using get and set for properties |
| 405-instanceof-check.js | instanceof checks object constructor |
| 406-closure-inside-class.js | Closure behavior inside class methods |
| 407-class-private-field.js | Class field using # syntax for private fields |
| 408-class-expression.js | Anonymous class expression |
| 409-bound-method.js | Method binding to preserve this |
| 410-object-from-entries.js | Create object from key-value pairs using .fromEntries() |
| 411-array-find-vs-filter.js | Difference between .find() and .filter() |
| 412-array-sort-without-compare.js | .sort() converts values to strings, causing numeric issues |
| 413-null-equality.js | null == undefined is true, but === is false |
| 414-async-function-return.js | Async functions always return a Promise |
| 415-function-name-property.js | Named function expressions retain name via .name |
| 416-promise-finally.js | .finally() runs regardless of resolve or reject |
| 417-json-parse-extra-comma.js | JSON doesn't support trailing commas |
| 418-typeof-nan.js | typeof NaN returns 'number' |
| 419-bigint-limits.js | Use BigInt for safe handling of very large numbers |
| 420-array-isarray-vs-instanceof.js | Compare Array.isArray() and instanceof Array |
| 421-array-clone-structured.js | Deep cloning using structuredClone() |
| 422-parseint-vs-number.js | Difference between parseInt() and Number() for strings |
| 423-optional-chaining.js | Safe access to nested properties using ?. |
| 424-boolean-double-negation.js | Convert any value to boolean using !! |
| 425-object-key-order.js | Object key ordering puts numeric keys first |
| 426-loop-return-label.js | Use labeled blocks to break from nested loops |
| 427-math-random-range.js | Get random integer between two values inclusive |
| 428-string-reverse.js | Reverse string using split-reverse-join |
| 429-destructure-nested-object.js | Destructure deeply nested object properties |
| 430-array-empty-vs-length.js | Sparse arrays created by setting index directly |
| 431-promise-resolve-then.js | Promise.resolve() executes .then() asynchronously |
| 432-null-instanceof-object.js | null instanceof Object is false |
| 433-array-concat-non-array.js | .concat() with non-array adds as single element |
| 434-symbol-tostring.js | Symbols can be stringified with .toString() |
| 435-set-to-array.js | Convert Set to array with [...set] |
| 436-object-values-order.js | Object.values() preserves insertion order |
| 437-for-await-of-array.js | for await...of works with async iterables |
| 438-regex-lastindex.js | Global RegExp updates .lastIndex across uses |
| 439-array-every-empty.js | .every() on empty array returns true |
| 440-float-precision.js | JS float precision quirk: 0.1 + 0.2 !== 0.3 |
| 441-string-replace-all.js | Use replaceAll() to replace all substrings |
| 442-json-stringify-replacer.js | Use JSON.stringify() with replacer array to filter keys |
| 443-boolean-object-truthy.js | new Boolean(false) is truthy in conditionals |
| 444-array-sparse-length.js | Setting high index increases array length (sparse array) |
| 445-in-operator-vs-hasown.js | Difference between in and hasOwnProperty() |
| 446-instanceof-custom.js | instanceof works with custom class checks |
| 447-symbol-non-enumerable.js | Symbol keys are not enumerable via Object.keys() |
| 448-array-reduce-no-init.js | reduce() without initial value uses first item |
| 449-delete-array-element.js | delete removes value but leaves empty slot |
| 450-string-padstart.js | Use .padStart() to left-pad strings to fixed length |
| 451-optional-chaining.js | Safe property access using ?.. |
| 452-nullish-coalescing.js | Use ?? to fallback only for null or undefined. |
| 453-object-hasown.js | Safer object key check with Object.hasOwn(). |
| 454-array-at-method.js | Access array items using .at() (including negatives). |
| 455-object-groupby.js | Group array objects by a property. |
| 456-logical-assignment.js | Use logical assignment operators like ` |
| 457-array-some.js | Check if some elements pass a condition. |
| 458-object-destructuring.js | Destructure objects with default values. |
| 459-remove-duplicates.js | Remove duplicates from array using Set. |
| 460-array-sort-numeric.js | Proper numeric array sorting with compare function. |
| 461-array-sort-numeric.js | Sort numbers in an array numerically |
| 462-object-property-check.js | Check if property exists in an object |
| 463-string-replace-all.js | Replace all occurrences in a string |
| 464-array-filter-truthy.js | Filter truthy values from an array |
| 465-parsefloat-int.js | Difference between parseInt and parseFloat |
| 466-object-fromarray-reduce.js | Create object from array using reduce |
| 467-array-isarray.js | Check if a variable is an array |
| 468-nan-comparison.js | Proper comparison of NaN values |
| 469-json-parse-error.js | Handle JSON parsing errors |
| 470-string-padstart.js | Pad string from start to fixed length |
| 471-array-includes-vs-indexof.js | includes() vs indexOf() for checking values |
| 472-nullish-coalescing.js | ?? nullish coalescing operator |
| 473-optional-chaining.js | ?. optional chaining |
| 474-map-vs-foreach.js | Difference between .map() and .forEach() |
| 475-async-await-return.js | async functions always return a Promise |
| 476-array-reduce-sum.js | Use .reduce() to sum array values |
| 477-parseint-radix.js | Importance of radix in parseInt() |
| 478-set-uniques.js | Using Set to get unique values from array |
| 479-object-destructuring.js | Object destructuring |
| 480-function-default-params.js | Default parameters in functions |
| 481-boolean-conversion.js | Convert values to boolean using !! |
| 482-array-flatten.js | Flatten nested arrays using flat() |
| 483-object-keys-length.js | Count object keys using Object.keys().length |
| 484-template-literals.js | Use template literals for string interpolation |
| 485-try-catch-error.js | Handle runtime errors with try-catch |
| 486-string-trim.js | Trim whitespace using trim() |
| 487-array-find.js | Find first match in array using find() |
| 488-array-from.js | Convert iterable or array-like to array using Array.from() |
| 489-number-isfinite.js | Check if value is finite using Number.isFinite() |
| 490-object-entries.js | Convert object to key-value pairs with Object.entries() |
| 491-array-reduce-sum.js | Sum array elements using reduce() |
| 492-object-values.js | Extract object values using Object.values() |
| 493-optional-chaining.js | Safely access nested properties using ?. |
| 494-nullish-coalescing.js | Use ?? to handle null or undefined |
| 495-string-padstart.js | Pad string from start using padStart() |
| 496-string-padend.js | Pad string from end using padEnd() |
| 497-map-basics.js | Create and use a Map object |
| 498-set-basics.js | Create and use a Set object |
| 499-object-hasown.js | Check property existence using Object.hasOwn() |
| 500-boolean-toggle.js | Toggle a boolean value |
| 501-map-object-entries.js | Iterate object using Object.entries() with map |
| 502-array-deduplicate-set.js | Remove duplicates from an array using Set |
| 503-function-default-param.js | Default function parameters |
| 504-string-template-literals.js | Using template literals for string construction |
| 505-number-to-fixed.js | Format number to fixed decimal places |
| 506-array-splice-vs-slice.js | Difference between splice and slice |
| 507-object-destructuring.js | Destructuring properties from an object |
| 508-array-find-vs-filter.js | find() vs filter() on arrays |
| 509-date-formatting.js | Format a date into DD/MM/YYYY format |
| 510-async-await-error.js | Handle async/await with try/catch |
| 511-array-length-vs-index.js | Difference between .length and highest index |
| 512-float-modulo-issue.js | Floating-point modulo precision issue |
| 513-symbol-unique.js | Every Symbol is unique |
| 514-json-stringify-replacer.js | Customize JSON.stringify() with replacer |
| 515-array-includes-vs-indexof.js | .includes() vs .indexOf() |
| 516-set-has-performance.js | .has() in Set is faster than in Array |
| 517-promise-chaining.js | Chaining .then() in Promises |
| 518-math-max-apply.js | Use Math.max on array with apply |
| 519-function-arguments-length.js | .length of function vs arguments.length |
| 520-object-hasown.js | Object.hasOwn() vs hasOwnProperty() |
| 521-capitalize-words.js | Capitalize first letter of each word in string |
| 522-count-vowels.js | Count vowels in a string |
| 523-remove-duplicates-array.js | Remove duplicate elements from an array |
| 524-is-empty-object.js | Check if an object is empty |
| 525-get-file-extension.js | Extract file extension from filename |
| 526-truncate-string.js | Truncate a string with ellipsis |
| 527-deep-clone.js | Deep clone an object using JSON |
| 528-object-from-pairs.js | Convert array of pairs to object |
| 529-is-palindrome.js | Check if a string is a palindrome |
| 530-merge-objects.js | Merge two objects into one |
| 531-object-values.js | Get values of an object using Object.values() |
| 532-object-entries.js | Convert object to array of key-value pairs |
| 533-array-includes.js | Check if an array includes a value |
| 534-array-concat.js | Merge arrays using concat() |
| 535-object-seal.js | Prevent new properties but allow modifications |
| 536-object-freeze.js | Make an object completely immutable |
| 537-nullish-coalescing.js | Use ?? operator for default values |
| 538-optional-chaining.js | Use ?. to safely access nested properties |
| 539-array-length-truncate.js | Truncate array by setting .length |
| 540-json-stringify-replacer.js | Filter JSON.stringify() output using replacer |
| 541-array-concat.js | Concatenate two arrays |
| 542-object-hasownproperty.js | Check if object has specific property |
| 543-string-search.js | Search for substring in a string |
| 544-array-map-index.js | Map array with index |
| 545-typeof-null.js | typeof null returns 'object' quirk |
| 546-array-reduce-sum.js | Sum array values using reduce |
| 547-object-values-length.js | Get number of properties in object |
| 548-string-uppercase.js | Convert string to uppercase |
| 549-array-find-object.js | Find object in array by key |
| 550-object-merge.js | Merge two objects using spread operator |
| 551-array-flat.js | Flatten nested arrays |
| 552-object-entries.js | Convert object to key-value pairs |
| 553-string-trim.js | Remove whitespace from both ends of string |
| 554-array-includes.js | Check if array contains a value |
| 555-optional-chaining-call.js | Safely call function using optional chaining |
| 556-object-assign.js | Copy properties from source to target object |
| 557-string-repeat.js | Repeat a string multiple times |
| 558-array-some.js | Check if some array elements pass a test |
| 559-number-isfinite.js | Check if a value is a finite number |
| 560-object-freeze.js | Make object immutable using Object.freeze |
| 561-array-every.js | Check if all array elements pass a test |
| 562-object-seal.js | Prevent adding/removing properties but allow edit |
| 563-string-startswith.js | Check if string starts with given substring |
| 564-string-endswith.js | Check if string ends with given substring |
| 565-number-parsefloat.js | Parse a string into a floating-point number |
| 566-number-parseint.js | Parse a string into an integer |
| 567-array-fill.js | Fill all array elements with a static value |
| 568-object-fromentries.js | Convert key-value pairs array into an object |
| 569-string-includes.js | Check if a string contains a substring |
| 570-number-isinteger.js | Check if a value is an integer |
| 571-array-some.js | Check if any array element passes a test |
| 572-object-freeze.js | Prevent any changes to object properties |
| 573-string-repeat.js | Repeat a string multiple times |
| 574-array-flat.js | Flatten nested arrays to given depth |
| 575-array-flatmap.js | Map and flatten array in one step |
| 576-string-trim.js | Remove whitespace from both ends of a string |
| 577-string-trimstart.js | Remove whitespace from start of a string |
| 578-string-trimend.js | Remove whitespace from end of a string |
| 579-number-issafeinteger.js | Check if a number is a safe integer |
| 580-math-clz32.js | Count leading zero bits of 32-bit integer |
| 581-math-imul.js | Perform 32-bit integer multiplication |
| 582-math-log10.js | Get base-10 logarithm of a number |
| 583-math-log2.js | Get base-2 logarithm of a number |
| 584-math-log1p.js | Natural log of (1 + number) |
| 585-math-expm1.js | e^x - 1 calculation |
| 586-math-hypot.js | Calculate square root of sum of squares |
| 587-array-copywithin.js | Copy array elements within the same array |
| 588-array-from.js | Create array from iterable or array-like object |
| 589-array-of.js | Create array from arguments |
| 590-object-assign.js | Copy properties from one object to another |
| 591-object-entries.js | Get array of key-value pairs from object |
| 592-object-getownpropertynames.js | Get all property names of object |
| 593-object-getprototypeof.js | Get prototype of an object |
| 594-object-is.js | Compare values for strict equality |
| 595-object-keys.js | Get array of object's own keys |
| 596-object-preventextensions.js | Prevent adding new properties to an object |
| 597-object-values.js | Get array of object's own values |
| 598-string-charat.js | Get character at specific index |
| 599-string-charcodeat.js | Get UTF-16 code unit at given index |
| 600-string-codepointat.js | Get Unicode code point at given position |
| 601-string-fromcharcode.js | Create string from UTF-16 code units |
| 602-string-fromcodepoint.js | Create string from Unicode code points |
| 603-string-includes.js | Check if string contains a substring |
| 604-string-indexof.js | Find index of substring in string |
| 605-string-lastindexof.js | Find last index of substring in string |
| 606-string-localecompare.js | Compare strings according to locale |
| 607-string-match.js | Match string with regex |
| 608-string-matchall.js | Get all regex matches with capturing groups |
| 609-string-normalize.js | Normalize Unicode string |
| 610-string-padend.js | Pad end of string to target length |
| 611-string-search.js | Search string with regex |
| 612-string-slice.js | Extract part of a string |
| 613-string-split.js | Split string into array by separator |
| 614-string-startswith.js | Check if string starts with given substring |
| 615-string-substring.js | Extract substring by start/end indexes |
| 616-string-tolocaleLowercase.js | Convert string to lowercase with locale rules |
| 617-string-tolocaleUppercase.js | Convert string to uppercase with locale rules |
| 618-string-tolowercase.js | Convert string to lowercase |
| 619-string-touppercase.js | Convert string to uppercase |
| 620-string-toString.js | Convert String object to string primitive |
| 621-string-valueof.js | Get primitive value of String object |
| 622-template-literals.js | Use template literals with expressions |
| 623-array-entries.js | Get array iterator of index-value pairs |
| 624-array-keys.js | Get array iterator of keys |
| 625-array-values.js | Get array iterator of values |
| 626-array-findindex.js | Find index of first element matching condition |
| 627-array-fill.js | Fill array elements with static value |
| 628-array-includes.js | Check if array contains a value |
| 629-array-tostring.js | Convert array to string |
| 630-array-join.js | Join array elements into string with separator |
| 631-asyncawait.js | Async functions always return a Promise. |
| 632-eventloop.js | Event loop: async callbacks run after sync code. |
| 633-hoisting.js | var declarations are hoisted with undefined. |
| 634-closure.js | Closures remember outer scope variables. |
| 635-thisbinding.js | this loses context when function is detached. |
| 636-promisechain.js | Promise chaining with error handling. |
| 637-objectreference.js | Objects are reference types, not copied by value. |
| 638-typecoercion.js | + operator with strings triggers concatenation. |
| 639-undefinednull.js | null == undefined is true, but null === undefined is false. |
| 640-iife.js | IIFE creates its own scope, variables not accessible outside. |
| 641-temporaldeadzone.js | let/const in Temporal Dead Zone until initialized. |
| 642-arraymap.js | Array.map applies function to each element. |
| 643-implicitcoercion.js | [] + [] coerces arrays to empty strings. |
| 644-prototypechain.js | Prototype chain allows method inheritance. |
| 645-equalitytricky.js | == allows coercion, === checks strict equality. |
| 646-setunique.js | Set stores unique values, spread returns unique array. |
| 647-destructuring.js | Array destructuring with skipped elements. |
| 648-optionalchaining.js | Optional chaining avoids errors for missing properties. |
| 649-nullishcoalescing.js | ?? checks for null/undefined only, not falsy values. |
| 650-stringtemplate.js | Template literals allow string interpolation with ${}. |
| 651-spreadoperator.js | Spread ... expands arrays/objects into elements. |
| 652-restparameter.js | Rest ... collects function arguments into an array. |
| 653-defaultparams.js | Function parameters can have default values. |
| 654-arrayreduce.js | Array.reduce accumulates values into a single result. |
| 655-arrayfilter.js | Array.filter returns elements matching a condition. |
| 656-arrayfind.js | Array.find returns the first matching element. |
| 657-arrayevery.js | Array.every checks if all elements satisfy a condition. |
| 658-arraysome.js | Array.some checks if at least one element matches. |
| 659-arrayincludes.js | Array.includes checks if an element exists. |
| 660-optionalparams.js | Functions can handle missing arguments gracefully. |
| 661-currying.js | Currying transforms function with multiple args into nested functions. |
| 662-functioncomposition.js | Combine functions where output of one is input to another. |
| 663-purefunction.js | Pure functions return same output for same input. |
| 664-impurefunction.js | Impure functions rely on/modify external state. |
| 665-memoization.js | Memoization caches function results for efficiency. |
| 666-callapplybind.js | call, apply, bind control this and arguments. |
| 667-eventdelegation.js | Event delegation leverages bubbling for efficiency. |
| 668-debounce.js | Debounce delays function execution until inactivity. |
| 669-throttle.js | Throttle ensures function executes at controlled intervals. |
| 670-generators.js | Generators (function*) yield values lazily using yield. |
| 671-asyncawaiterror.js | Async/Await error handling with try/catch |
| 672-optionalchaining.js | Optional chaining (?.) usage |
| 673-nullishcoalescing.js | Nullish coalescing (??) operator |
| 674-arrayflat.js | Array .flat() and .flatMap() |
| 675-promiseallsettled.js | Promise.allSettled() vs Promise.all |
| 676-weakset.js | WeakSet basics and use-cases |
| 677-weakmap.js | WeakMap for private object data |
| 678-dynamicimport.js | Dynamic import() usage |
| 679-generatorasync.js | Async Generators (async function*) |
| 680-proxyobject.js | Proxy objects and traps |
| 681-bigint.js | BigInt basics |
| 682-globalthis.js | globalThis usage |
| 683-finallyblock.js | Promise finally block |
| 684-logicalassignment.js | Logical assignment operators (&&=, |
| 685-stringmatchall.js | String matchAll |
| 686-topromiseany.js | Promise.any example |
| 687-privateclassfields.js | Private class fields (#field) |
| 688-aggregateerror.js | AggregateError example |
| 689-numericseparators.js | Numeric separators for readability |
| 690-objectfromentries.js | Object.fromEntries usage |
| 691-sharedarraybuffer.js | SharedArrayBuffer basics |
| 692-atomics.js | Using Atomics for thread-safe operations |
| 693-performanceapi.js | Performance API |
| 694-intersectionobserver.js | IntersectionObserver for lazy loading |
| 695-mutationobserver.js | MutationObserver to watch DOM changes |
| 696-resizeobserver.js | ResizeObserver API |
| 697-intlpluralrules.js | Intl.PluralRules |
| 698-intllistformat.js | Intl.ListFormat |
| 699-intlrelativetimeformat.js | Intl.RelativeTimeFormat |
| 700-finalizationregistry.js | FinalizationRegistry |
| 701-textencoder.js | Encode text into Uint8Array |
| 702-textdecoder.js | Decode Uint8Array back to string |
| 703-dataview.js | Access ArrayBuffer with DataView |
| 704-setprototypeof.js | Change an object's prototype |
| 705-getprototypeof.js | Get an object's prototype |
| 706-reflect-apply.js | Use Reflect.apply to call a function |
| 707-reflect-construct.js | Use Reflect.construct for object creation |
| 708-reflect-defineprop.js | Define property using Reflect |
| 709-reflect-deleteprop.js | Delete property using Reflect |
| 710-reflect-ownkeys.js | List all keys of an object with Reflect |
| 711-queue-microtask.js | queueMicrotask basics |
| 712-navigator-online.js | navigator.onLine usage |
| 713-matchmedia.js | matchMedia API |
| 714-performance-now.js | High resolution time with performance.now |
| 715-btoa-atob.js | Base64 encode/decode with btoa & atob |
| 716-textencoder.js | Encoding text using TextEncoder |
| 717-textdecoder.js | Decoding bytes with TextDecoder |
| 718-history-api.js | Using History API pushState |
| 719-beforeunload.js | beforeunload event handling |
| 720-clipboard-api.js | Copying text with Clipboard API |
| 721-date-basics.js | Date basics |
| 722-date-getters.js | Date getters |
| 723-date-setters.js | Date setters |
| 724-date-parse.js | Date.parse |
| 725-date-now.js | Date.now |
| 726-date-toISOString.js | Date.toISOString |
| 727-date-toLocaleString.js | Date.toLocaleString |
| 728-date-diff.js | Date difference |
| 729-date-comparison.js | Date comparison |
| 730-date-custom-format.js | Custom date format |
| 731-set-basics.js | Set Basics |
| 732-set-add.js | Adding values to a Set |
| 733-set-has.js | Checking presence in Set |
| 734-set-delete.js | Deleting values from Set |
| 735-set-clear.js | Clearing Set |
| 736-set-size.js | Size of Set |
| 737-set-iteration.js | Iterating over Set |
| 738-set-foreach.js | forEach with Set |
| 739-set-vs-array.js | Set vs Array |
| 740-set-convert-array.js | Convert Set to Array |
| 741-set-union.js | Union of Sets |
| 742-set-intersection.js | Intersection of Sets |
| 743-set-difference.js | Difference of Sets |
| 744-set-symmetric-difference.js | Symmetric Difference |
| 745-set-objects.js | Objects in Set |
| 746-set-reference.js | Object Reference in Set |
| 747-set-performance.js | Set Performance vs Array |
| 748-set-weakset.js | WeakSet Intro |
| 749-set-usecase-unique.js | Removing duplicates using Set |
| 750-set-usecase-tags.js | Managing unique tags |
| 751-navigator-basics.js | Navigator Basics |
| 752-navigator-useragent.js | User Agent |
| 753-navigator-language.js | Language |
| 754-navigator-languages.js | Languages |
| 755-navigator-online.js | Online/Offline Detection |
| 756-navigator-cookieenabled.js | Cookies Enabled |
| 757-navigator-plugins.js | Plugins |
| 758-navigator-mimetypes.js | MIME Types |
| 759-navigator-clipboard.js | Clipboard Write |
| 760-navigator-clipboard-read.js | Clipboard Read |
| 761-navigator-geolocation.js | Geolocation |
| 762-navigator-geolocation-watch.js | Geolocation Watch |
| 763-navigator-media-devices.js | Media Devices |
| 764-navigator-hardware-concurrency.js | Hardware Concurrency |
| 765-navigator-device-memory.js | Device Memory |
| 766-navigator-serviceworker.js | Service Worker Support |
| 767-navigator-credentials.js | Credentials API |
| 768-navigator-sendbeacon.js | SendBeacon |
| 769-navigator-usb.js | USB API |
| 770-navigator-share.js | Share API |
| 771-navigator-userAgent.js | User Agent |
| 772-navigator-language.js | Language |
| 773-navigator-languages.js | Languages |
| 774-navigator-onLine.js | Online/Offline Detection |
| 775-navigator-platform.js | Platform |
| 776-navigator-product.js | Product (Rendering Engine) |
| 777-navigator-cookiesEnabled.js | Cookies Enabled |
| 778-navigator-javaEnabled.js | Java Enabled |
| 779-navigator-vibrate.js | Vibrate API |
| 780-navigator-clipboard.js | Clipboard API |
| 781-navigator-mediaDevices.js | Media Devices (Camera/Microphone) |
| 782-navigator-geolocation.js | Geolocation |
| 783-navigator-serviceWorker.js | Service Worker |
| 784-navigator-hardwareConcurrency.js | Hardware Concurrency |
| 785-navigator-deviceMemory.js | Device Memory |
| 786-navigator-connection.js | Network Information |
| 787-navigator-sendBeacon.js | Send Beacon |
| 788-navigator-permissions.js | Permissions API |
| 789-navigator-credentials.js | Credential Management API |
| 790-navigator-usb.js | USB API |
| 791-symmetric-difference.js | Find elements unique to each set. |
| 792-subset-check.js | Verify if all elements of one set exist in another. |
| 793-superset-check.js | Confirm one set contains another. |
| 794-disjoint-sets.js | Ensure two sets share no elements. |
| 795-power-set.js | Generate all possible subsets. |
| 796-cartesian-product.js | All ordered pairs between two sets. |
| 797-remove-duplicates.js | Use Set to deduplicate an array. |
| 798-frequency-counter.js | Count occurrences of words in text. |
| 799-unique-strings.js | Check if string has all unique chars. |
| 800-unique-objects.js | Deduplicate objects by property (e.g., id). |
| 801-union-multiple-sets.js | Merge multiple sets into one. |
| 802-intersection-multiple-sets.js | Get common elements across many sets. |
| 803-symmetric-diff-multiple.js | Elements appearing in odd number of sets. |
| 804-set-from-string.js | Get unique characters from a string. |
| 805-set-to-string.js | Convert set back to string. |
| 806-set-to-array.js | Convert set into array. |
| 807-array-to-set.js | Convert array into set. |
| 808-clone-set.js | Duplicate a set. |
| 809-compare-sets.js | Check if two sets are equal. |
| 810-merge-sets-array.js | Merge multiple sets into single array. |
| 811-remove-words.js | Remove banned words from text. |
| 812-unique-subarrays.js | Remove duplicate subarrays. |
| 813-unique-pairs.js | Store unique pairs of numbers. |
| 814-filter-set.js | Keep only even numbers from set. |
| 815-map-set.js | Apply function to each element in set. |
| 816-reduce-set.js | Reduce set to single value (e.g., sum). |
| 817-set-union-strings.js | Merge sets of characters. |
| 818-count-unique-words.js | Count number of unique words in text. |
| 819-remove-falsy.js | Remove falsy values from set. |
| 820-set-operations-lib.js | Common set operations library (union, etc). |
| 821-unique-emails.js | Normalize emails and count unique ones. |
| 822-intersection-size.js | Find number of common elements in two sets. |
| 823-difference-size.js | Find size of difference set. |
| 824-union-size.js | Count total unique elements across sets. |
| 825-is-empty-set.js | Verify if a set is empty. |
| 826-clear-set.js | Remove all elements from a set. |
| 827-set-vs-array-lookup.js | Compare lookup performance. |
| 828-union-all.js | Union operation on array of sets. |
| 829-find-missing.js | Identify missing elements from a range. |
| 830-intersection-all.js | Find common elements across multiple sets. |
| 831-set-difference-multiple.js | Remove elements of all other sets from first. |
| 832-symmetric-diff-size.js | Count unique elements in symmetric difference. |
| 833-unique-ids.js | Extract unique ids from objects array. |
| 834-track-visits.js | Track visited pages using Set. |
| 835-remove-chars.js | Remove unwanted chars from string. |
| 836-unique-nums-range.js | Count unique nums in given range. |
| 837-check-palindrome-permutation.js | Check if string can be rearranged into palindrome. |
| 838-first-duplicate.js | Find first duplicate element in array. |
| 839-longest-unique-substring.js | Find length of longest substring without repeats. |
| 840-unique-pairs-sum.js | Find unique pairs with target sum. |
| 841-set-to-json.js | Convert Set to JSON string. |
| 842-json-to-set.js | Convert JSON string back to Set. |
| 843-set-union-function.js | Reusable union function for Sets. |
| 844-set-intersection-function.js | Reusable intersection function for Sets. |
| 845-set-difference-function.js | Reusable difference function for Sets. |
| 846-symmetric-diff-function.js | Symmetric difference utility. |
| 847-set-to-map.js | Convert Set into Map. |
| 848-map-to-set.js | Convert Map into Set. |
| 849-set-group-by-length.js | Group strings by length using Set + Map. |
| 850-set-performance-large.js | Performance comparison: Set vs Array lookup. |
| 851-set-union-n-sets.js | Union of N sets efficiently. |
| 852-set-cartesian-multi.js | Cartesian product of multiple sets. |
| 853-set-combinations-k.js | Generate k-combinations from Set. |
| 854-set-permutations.js | Generate permutations of Set elements. |
| 855-set-power-recursive.js | Recursive power set generation. |
| 856-set-unique-subarrays.js | Deduplicate array of arrays using Set. |
| 857-set-anagrams.js | Group words that are anagrams. |
| 858-set-unique-pairs.js | Store unique pairs using Set. |
| 859-set-of-sets.js | Nesting Sets inside another Set. |
| 860-set-equality-check.js | Check equality between two Sets. |
| 861-set-to-linkedlist.js | Convert Set to Linked List. |
| 862-linkedlist-to-set.js | Convert Linked List to Set. |
| 863-set-union-performance.js | Benchmark union performance on large Sets. |
| 864-set-vs-object-keys.js | Compare Set with Object keys usage. |
| 865-set-intersection-large.js | Optimize intersection for large datasets. |
| 866-set-difference-large.js | Efficient difference for large datasets. |
| 867-set-union-vs-concat.js | Use concat + Set for quick union. |
| 868-set-to-binarytree.js | Convert Set to Binary Search Tree. |
| 869-binarytree-to-set.js | Convert Binary Search Tree back to Set. |
| 870-set-symmetric-multi.js | Symmetric difference across multiple Sets. |
| 871-set-random-element.js | Pick a random element from Set. |
| 872-set-shuffle.js | Shuffle elements of a Set. |
| 873-set-union-stream.js | Union of streaming data using Set. |
| 874-set-memory-usage.js | Measure memory usage of Set. |
| 875-set-vs-array-memory.js | Compare memory of Set vs Array. |
| 876-set-benchmark-add.js | Benchmark performance of Set add(). |
| 877-set-benchmark-has.js | Benchmark performance of Set has(). |
| 878-set-benchmark-delete.js | Benchmark performance of Set delete(). |
| 879-set-size-vs-length.js | Understand size vs length in Set. |
| 880-set-clear.js | Clear all elements from a Set. |
| 881-set-union-multiple.js | Union of multiple Sets. |
| 882-set-intersection-multiple.js | Intersection across multiple Sets. |
| 883-symmetric-difference-multiple.js | Symmetric difference across multiple Sets. |
| 884-subset-strict.js | Strict subset check. |
| 885-superset-strict.js | Strict superset check. |
| 886-set-to-array.js | Convert Set to Array. |
| 887-array-to-set.js | Convert Array to Set. |
| 888-set-to-json.js | Convert Set to JSON. |
| 889-json-to-set.js | Convert JSON to Set. |
| 890-set-shallow-copy.js | Shallow copy of a Set. |
| 891-set-deep-copy.js | Deep copy of a Set. |
| 892-set-difference.js | Difference between two Sets. |
| 893-set-symmetric-difference.js | Symmetric difference between two Sets. |
| 894-set-equality.js | Equality check between two Sets. |
| 895-set-is-empty.js | Check if a Set is empty. |
| 896-set-size-limit.js | Enforce size limit on a Set. |
| 897-set-random-element.js | Pick random element from a Set. |
| 898-set-clear.js | Clear all elements from a Set. |
| 899-set-for-each.js | Iterate using forEach on Set. |
| 900-set-iteration.js | Iterate through Set values with for...of. |
| 901-set-union-vs-concat.js | Compare Set union with array concat. |
| 902-set-from-string.js | Remove duplicate characters from string. |
| 903-set-to-string.js | Convert Set of chars to string. |
| 904-set-to-map.js | Convert Set into Map. |
| 905-map-to-set.js | Convert Map into Set. |
| 906-set-math-union.js | Implement union operation. |
| 907-set-math-intersection.js | Implement intersection operation. |
| 908-set-math-difference.js | Implement difference operation. |
| 909-set-math-symmetric.js | Implement symmetric difference operation. |
| 910-set-to-object.js | Convert Set to plain object. |
| 911-object-to-set.js | Convert object keys into Set. |
| 912-set-union-performance.js | Performance test of union. |
| 913-set-memory-usage.js | Memory usage with Set. |
| 914-set-vs-array-includes.js | Performance of Set.has vs Array.includes. |
| 915-set-unique-words.js | Count unique words in text. |
| 916-set-anagram-check.js | Basic anagram check using Set. |
| 917-set-palindrome-check.js | Check if string can form palindrome. |
| 918-set-vowels-count.js | Count distinct vowels in string. |
| 919-set-subsequence-check.js | Check if string is subsequence of another. |
| 920-set-duplicates-detect.js | Detect duplicates in array using Set. |
| 921-set-random-sample.js | Pick a random element from a Set. |
| 922-set-union-multiple.js | Find union of multiple Sets. |
| 923-set-intersection-multiple.js | Find intersection across multiple Sets. |
| 924-set-difference-multiple.js | Subtract multiple Sets from one. |
| 925-set-to-json.js | Serialize a Set to JSON. |
| 926-json-to-set.js | Deserialize JSON into a Set. |
| 927-set-symmetric-multiple.js | Symmetric difference of multiple Sets. |
| 928-set-unique-pairs.js | Generate unique element pairs. |
| 929-set-permutations.js | Generate permutations from Set values. |
| 930-set-combinations.js | Generate combinations from Set values. |
| 931-set-union-objects.js | Union of object Sets by unique key. |
| 932-set-intersection-objects.js | Intersection of object Sets by key. |
| 933-set-difference-objects.js | Difference of object Sets by key. |
| 934-set-cartesian-objects.js | Cartesian product of object Sets. |
| 935-set-group-by-property.js | Group objects by property using Sets. |
| 936-set-unique-by-multiple.js | Deduplicate objects by multiple keys. |
| 937-set-cache-example.js | Cache implementation using Set. |
| 938-set-permissions-check.js | Permission checks with Sets. |
| 939-set-tags-search.js | Tag-based search using Sets. |
| 940-set-rate-limiter.js | Simple rate limiter using Sets. |
| 941-set-active-sessions.js | Track active sessions with Set. |
| 942-set-online-users.js | Track online users in real-time. |
| 943-set-websocket-clients.js | Manage WebSocket clients. |
| 944-set-notification-tracking.js | Prevent duplicate notifications. |
| 945-set-unique-tokens.js | Ensure tokens are unique. |
| 946-set-session-timeout.js | Expire sessions with timeout. |
| 947-set-message-ids.js | Deduplicate chat messages. |
| 948-set-unique-visitors.js | Count unique visitors by IP. |
| 949-set-feature-flags.js | Manage feature flags with Set. |
| 950-set-api-keys.js | Track valid API keys. |
| 951-set-room-members.js | Manage chat room members. |
| 952-set-cart-items.js | Shopping cart without duplicates. |
| 953-set-unique-likes.js | Enforce unique likes. |
| 954-set-job-queue.js | Ensure jobs run only once. |
| 955-set-temp-block.js | Temporary blocklist with auto-expiry. |
| 956-set-batch-processing.js | Batch items before processing. |
| 957-set-search-history.js | Store unique search terms. |
| 958-set-real-time-rooms.js | Manage game rooms with Map+Set. |
| 959-set-pending-friends.js | Track pending friend requests. |
| 960-set-export-to-json.js | Export Set to JSON format. |
| 961-set-caching.js | Cache API request IDs to prevent repeats. |
| 962-set-throttling.js | Throttle user actions using Set. |
| 963-set-event-tracking.js | Track events once per session. |
| 964-set-dns-cache.js | Simple DNS cache with Set. |
| 965-set-tagging-system.js | Maintain unique tags for articles. |
| 966-set-unique-orders.js | Avoid duplicate order processing. |
| 967-set-auto-cleanup.js | Auto-expire temporary items. |
| 968-set-invite-codes.js | One-time invite code redemption. |
| 969-set-feature-access.js | Manage feature access rights. |
| 970-set-unique-emails.js | Store unique email addresses. |
- Read the code, predict the output before running.
- Use terminal or browser console to verify.
- Read the explanation in the comments to deepen understanding.
Happy debugging and predicting! 🔥