{"jsprofiler":{"version":"2.5.7","options":{"iterations":1000,"verbosity":2,"magnitude":1000,"memory":false,"precision":{"time":20,"memory":4},"units":{"memory":"B","time":"ms"},"json":false,"console":false}},"node":{"version":"18.18.0"},"v8":{"version":"10.2.154.26-node.26"},"results":[{"name":"recursion","description":"Recursion variations: Calculating sum of array of integers. Profile contains a simple for-loop for reference.","keywords":["for","loop","recursion","sum","tail","tailrecursion"],"functions":[{"description":"for loop sum for reference","keywords":["for","loop","sum"],"codeSample":"for (...) { sum += d[i] }","code":"(d) => {\n    let sum = 0;\n    for (let i = 0; i < d.length; i++) {\n      sum += d[i];\n    }\n\n    return sum;\n  }","time":{"average":"0.00435791397094726588ms","minimum":"0.00178527832031250000ms","maximum":"0.14145660400390625000ms"}},{"description":"recursive sum","keywords":["recursion","sum"],"codeSample":"const f = (d) => (d && d.length && (d[0] + f(d.slice(1)))) || 0","code":"(d) => (d && d.length && (d[0] + recursiveSum.f(d.slice(1)))) || 0","time":{"average":"1.64670008087158192822ms","minimum":"0.84176254272460937500ms","maximum":"13.26007843017578125000ms"}},{"description":"tail recursive sum","keywords":["recursion","sum","tail","tailrecursion"],"codeSample":"const f = (d, i = 0) => (!d.length && i) || f(d.slice(1), i + d[0])","code":"(d, i = 0) => (!d.length && i)\n    || tailRecursiveSum.f(d.slice(1), i + d[0])","time":{"average":"1.75950892639160150210ms","minimum":"0.99636077880859375000ms","maximum":"6.50238990783691406250ms"}}],"fastest":[{"description":"for loop sum for reference","keywords":["for","loop","sum"],"codeSample":"for (...) { sum += d[i] }","code":"(d) => {\n    let sum = 0;\n    for (let i = 0; i < d.length; i++) {\n      sum += d[i];\n    }\n\n    return sum;\n  }","time":{"average":"0.00435791397094726588ms","minimum":"0.00178527832031250000ms","maximum":"0.14145660400390625000ms"}}]},{"name":"object iteration","description":"Object iteration: different ways of iterating over properties of an object and concatenating property names into a single string.","keywords":["check","entries","for","foreach","forin","forof","getownpropertynames","hasownperperty","in","iteration","keys","loop","map","names","object","of","own","ownproperties","ownproperty","ownpropertynames","ownprops","property"],"functions":[{"description":"iterating an object's entries with forEach","keywords":["entries","foreach","iteration","loop","object","property"],"codeSample":"Object.entries(obj).forEach => string","code":"(d) => {\n    let s = '';\n    Object.entries(d).forEach((e) => {\n      s = `${s}${e[0]}`;\n    });\n    return s;\n  }","time":{"average":"0.00412195587158203144ms","minimum":"0.00224876403808593750ms","maximum":"0.30957603454589843750ms"}},{"description":"for property in object loop","keywords":["for","forin","in","iteration","loop","object","property"],"codeSample":"for (const prop in obj) { } => string","code":"(d) => {\n    let s = '';\n    for (const p in d) {\n      s = `${s}${p}`;\n    }\n    return s;\n  }","time":{"average":"0.00170788192749023442ms","minimum":"0.00075149536132812500ms","maximum":"0.19872856140136718750ms"}},{"description":"iterating a Map's keys with for of","keywords":["for","forof","iteration","keys","loop","map","of","property"],"codeSample":"for (prop of Map.keys()) => string","code":"(d) => {\n    let s = '';\n    for (const p of d.keys()) {\n      s = `${s}${p}`;\n    }\n    return s;\n  }","time":{"average":"0.03071524047851562425ms","minimum":"0.01433181762695312500ms","maximum":"4.12993431091308593750ms"}},{"description":"iterating an object's own property names with for of","keywords":["for","forof","getownpropertynames","loop","names","object","of","own","ownproperties","ownpropertynames","ownprops","property"],"codeSample":"for (prop of Object.getOwnPropertyNames(obj)) => string","code":"(d) => {\n    let s = '';\n    for (const p of Object.getOwnPropertyNames(d)) {\n      s = `${s}${p}`;\n    }\n    return s;\n  }","time":{"average":"0.00179333496093750009ms","minimum":"0.00109481811523437500ms","maximum":"0.13125228881835937500ms"}},{"description":"iterating an object's keys with for of","keywords":["for","forof","iteration","keys","loop","object","of","property"],"codeSample":"for (prop of Object.keys(obj)) => string","code":"(d) => {\n    let s = '';\n    for (const p of Object.keys(d)) {\n      s = `${s}${p}`;\n    }\n    return s;\n  }","time":{"average":"0.00219629287719726564ms","minimum":"0.00108528137207031250ms","maximum":"0.17743492126464843750ms"}},{"description":"iterating an object's keys in a for of loop with own-property check","keywords":["check","for","forof","hasownperperty","iteration","keys","loop","object","of","own","ownproperty","property"],"codeSample":"for (prop of Object.keys(obj)) { obj.hasOwnProperty(prop) && ... }","code":"(d) => {\n    let s = '';\n    for (const p of Object.keys(d)) {\n      if (d.hasOwnProperty(p)) { // eslint-disable-line\n        s = `${s}${p}`;\n      }\n    }\n    return s;\n  }","time":{"average":"0.00217738342285156254ms","minimum":"0.00098037719726562500ms","maximum":"0.14563179016113281250ms"}},{"description":"iterating an object's keys with forEach","keywords":["foreach","iteration","keys","loop","object","property"],"codeSample":"Object.keys(obj).forEach() => string","code":"(d) => {\n    let s = '';\n    Object.keys(d).forEach((p) => {\n      s = `${s}${p}`;\n    });\n    return s;\n  }","time":{"average":"0.00131772232055664060ms","minimum":"0.00084495544433593750ms","maximum":"0.14487648010253906250ms"}},{"description":"iterating an object's own property names with forEach","keywords":["foreach","getownpropertynames","loop","names","names","object","own","ownproperties","ownpropertynames","ownprops","property"],"codeSample":"Object.getOwnPropertyNames(obj).forEach() => string","code":"(d) => {\n    let s = '';\n    Object.getOwnPropertyNames(d).forEach((p) => {\n      s = `${s}${p}`;\n    });\n    return s;\n  }","time":{"average":"0.00173780632019042967ms","minimum":"0.00085258483886718750ms","maximum":"0.13644599914550781250ms"}}],"fastest":[{"description":"iterating an object's keys with forEach","keywords":["foreach","iteration","keys","loop","object","property"],"codeSample":"Object.keys(obj).forEach() => string","code":"(d) => {\n    let s = '';\n    Object.keys(d).forEach((p) => {\n      s = `${s}${p}`;\n    });\n    return s;\n  }","time":{"average":"0.00131772232055664060ms","minimum":"0.00084495544433593750ms","maximum":"0.14487648010253906250ms"}}]},{"name":"map:creation","description":"Object literal vs. Map: creating a map.","keywords":["construtor","creation","defineProperties","defineProperty","key-value","literal","map","object","pairs","properties","set","spread","syntax"],"functions":[{"description":"passing key-value pairs to the Map constructor","keywords":["construtor","creation","key-value","map","pairs"],"codeSample":"new Map([props])","code":"(d) => new Map(d.map((dp, i) => [i, dp]))","time":{"average":"0.12756106376647949330ms","minimum":"0.10786056518554687500ms","maximum":"0.73329544067382812500ms"}},{"description":"Object's definePropety() method on an Object literal","keywords":["creation","defineProperty","literal","map","object","properties"],"codeSample":"Object.defineProperty({}, prop, desc)","code":"(d) => {\n    const m = {};\n    d.forEach((dp, i) =>\n      Object.defineProperty(m, i, {\n        value: dp,\n        enumerable: true\n      })\n    );\n    return m;\n  }","time":{"average":"0.46554054450988768821ms","minimum":"0.41540336608886718750ms","maximum":"1.30004692077636718750ms"}},{"description":"Object's defineProperties method on an Object literal","keywords":["creation","defineProperties","literal","map","object","properties"],"codeSample":"Object.defineProperties({}, props)","code":"(d) => {\n    const m = {};\n    Object.defineProperties(m, d.reduce((props, dp, i) =>\n      Object.assign(props, {\n        [i]: {\n          value: dp,\n          enumerable: true\n        }\n      }), {}));\n    return m;\n  }","time":{"average":"4.78019584846496581321ms","minimum":"4.04758262634277343750ms","maximum":"13.88599586486816406250ms"}},{"description":"Map.set() in a forEach loop","keywords":["creation","map","set"],"codeSample":"Map.set()","code":"(d) => {\n    const m = new Map();\n    d.forEach((dp, i) => m.set(i, dp));\n    return m;\n  }","time":{"average":"0.10338580322265625289ms","minimum":"0.08646392822265625000ms","maximum":"0.44480133056640625000ms"}},{"description":"setting properties on an Object literal","keywords":["creation","literal","map","object","properties"],"codeSample":"{}.prop = val","code":"(d) => {\n    const m = {};\n    d.forEach((dp, i) => m[i] = dp);\n    return m;\n  }","time":{"average":"0.05276353645324707159ms","minimum":"0.03164863586425781250ms","maximum":"0.43178176879882812500ms"}},{"description":"object spread syntax","keywords":["creation","literal","map","object","properties","spread","syntax"],"codeSample":"{ ...props }","code":"(d) => ({\n    ...d\n  })","time":{"average":"0.28250889778137205921ms","minimum":"0.26707649230957031250ms","maximum":"0.52906608581542968750ms"}}],"fastest":[{"description":"setting properties on an Object literal","keywords":["creation","literal","map","object","properties"],"codeSample":"{}.prop = val","code":"(d) => {\n    const m = {};\n    d.forEach((dp, i) => m[i] = dp);\n    return m;\n  }","time":{"average":"0.05276353645324707159ms","minimum":"0.03164863586425781250ms","maximum":"0.43178176879882812500ms"}}]},{"name":"map:access","description":"Object literal vs. Map: retrieving values.","keywords":["access",["access","map","object","property"],"get","map"],"functions":[{"description":"Map's get() method","keywords":["access","get","map"],"codeSample":"Map.get()","code":"(d) => d.get(randInt(d.size - 1))","time":{"average":"0.00166494560241699208ms","minimum":"0.00123786926269531250ms","maximum":"0.15839576721191406250ms"}},{"description":"access object property","keywords":["access","map","object","property"],"codeSample":"{}.prop","code":"(d) => d[randInt(d.size - 1)]","time":{"average":"0.00155610275268554688ms","minimum":"0.00114631652832031250ms","maximum":"0.04159736633300781250ms"}}],"fastest":[{"description":"access object property","keywords":["access","map","object","property"],"codeSample":"{}.prop","code":"(d) => d[randInt(d.size - 1)]","time":{"average":"0.00155610275268554688ms","minimum":"0.00114631652832031250ms","maximum":"0.04159736633300781250ms"}}]},{"name":"loops","description":"Loop variations: Converting an array of integers into an array of booleans satisfying a conjunction of two simple relational operations.","keywords":["array","do","for","foreach","inverse","iteration","length","loop","map","object","of","property","push","variable","while"],"functions":[{"description":"forEach loop","keywords":["array","foreach","iteration","loop","push"],"codeSample":"[].forEach((d) => [].push(d)) => []","code":"(d) => {\n    const r = [];\n    d.forEach((dp) => r.push(dp < 5 && dp > 3));\n    return r;\n  }","time":{"average":"0.03694181251525879145ms","minimum":"0.03143501281738281250ms","maximum":"0.33271408081054687500ms"}},{"description":"for loop","keywords":["array","for","iteration","loop","push"],"codeSample":"for(i < d.length; i++) { [].push(d[i]) } => []","code":"(d) => {\n    const r = [];\n    let dp;\n    for (let i = 0; i < d.length; i++) {\n      dp = d[i];\n      r.push(dp < 5 && dp > 3);\n    }\n\n    return r;\n  }","time":{"average":"0.02408325195312499903ms","minimum":"0.02007484436035156250ms","maximum":"0.22715950012207031250ms"}},{"description":"for loop with length variable","keywords":["array","for","iteration","length","loop","push","variable"],"codeSample":"for(i < len; i++) { [].push(d[i]) } => []","code":"(d) => {\n    const r = [];\n    const len = d.length;\n    let dp;\n    for (let i = 0; i < len; i++) {\n      dp = d[i];\n      r.push(dp < 5 && dp > 3);\n    }\n\n    return r;\n  }","time":{"average":"0.02418137741088867074ms","minimum":"0.01999473571777343750ms","maximum":"0.23806762695312500000ms"}},{"description":"for of loop","keywords":["array","for","iteration","loop","object","of","property","push"],"codeSample":"for (prop of []) { [].push(prop) } => []","code":"(d) => {\n    const r = [];\n    for (const p of d) {\n      r.push(p < 5 && p > 3);\n    }\n\n    return r;\n  }","time":{"average":"0.03025709533691406383ms","minimum":"0.02058410644531250000ms","maximum":"0.37695121765136718750ms"}},{"description":"inverse while loop","keywords":["array","inverse","iteration","loop","push","while"],"codeSample":"while(i--) { [].push(d[i]) } => []","code":"(d) => {\n    const r = [];\n    let i = d.length;\n    let dp;\n    while (i--) {\n      dp = d[i];\n      r.push(dp < 5 && dp > 3);\n    }\n\n    return r.reverse();\n  }","time":{"average":"0.03305382156372070612ms","minimum":"0.02359390258789062500ms","maximum":"0.27624702453613281250ms"}},{"description":"map","keywords":["array","iteration","loop","map"],"codeSample":"[].map() => []","code":"(d) => d.map((dp) => dp < 5 && dp > 3)","time":{"average":"0.02514602088928222581ms","minimum":"0.01645278930664062500ms","maximum":"0.21082687377929687500ms"}},{"description":"while loop","keywords":["array","inverse","iteration","loop","push","while"],"codeSample":"while(i < d.length) { [].push(d[i]) } => []","code":"(d) => {\n    const r = [];\n    let i = 0;\n    let dp;\n    while (i < d.length) {\n      dp = d[i];\n      r.push(dp < 5 && dp > 3);\n      i++;\n    }\n\n    return r;\n  }","time":{"average":"0.03297373771667480580ms","minimum":"0.01999855041503906250ms","maximum":"0.32068443298339843750ms"}},{"description":"while loop with length variable","keywords":["array","iteration","length","loop","push","variable","while"],"codeSample":"while(i < len) { [].push(d[i]) } => []","code":"(d) => {\n    const r = [];\n    const len = d.length;\n    let i = 0;\n    let dp;\n    while (i < len) {\n      dp = d[i];\n      r.push(dp < 5 && dp > 3);\n      i++;\n    }\n\n    return r;\n  }","time":{"average":"0.02466300582885742193ms","minimum":"0.01964759826660156250ms","maximum":"0.32544898986816406250ms"}},{"description":"do while loop","keywords":["array","do","iteration","loop","push","while"],"codeSample":"do { [].push(d[i]) } while (i < d.length) => []","code":"(d) => {\n    const r = [];\n    let i = 0;\n    let dp;\n    do {\n      dp = d[i];\n      r.push(dp < 5 && dp > 3);\n      i++;\n    } while (i < d.length);\n\n    return r;\n  }","time":{"average":"0.02530830192565917958ms","minimum":"0.01968574523925781250ms","maximum":"0.26316261291503906250ms"}},{"description":"do while loop with length variable","keywords":["array","do","iteration","length","loop","push","variable","while"],"codeSample":"do { [].push(d[i]) } while (i < len) => []","code":"(d) => {\n    const r = [];\n    let i = 0;\n    const len = d.length;\n    let dp;\n    do {\n      dp = d[i];\n      r.push(dp < 5 && dp > 3);\n      i++;\n    } while (i < len);\n\n    return r;\n  }","time":{"average":"0.02562564086914062567ms","minimum":"0.02009582519531250000ms","maximum":"0.24523353576660156250ms"}}],"fastest":[{"description":"for loop","keywords":["array","for","iteration","loop","push"],"codeSample":"for(i < d.length; i++) { [].push(d[i]) } => []","code":"(d) => {\n    const r = [];\n    let dp;\n    for (let i = 0; i < d.length; i++) {\n      dp = d[i];\n      r.push(dp < 5 && dp > 3);\n    }\n\n    return r;\n  }","time":{"average":"0.02408325195312499903ms","minimum":"0.02007484436035156250ms","maximum":"0.22715950012207031250ms"}}]},{"name":"guards","description":"Variable guards: checking whether a variable is defined or of a certain type.","keywords":["!","!!","array","bool","boolean","check","comparison","defined","double","equality","existence","function","global","hasownproperty","identity","in","isArray","isnan","loose","method","nan","negation","not","not a number","notnot","null","number","object","operator","prop","property","prototype","strict","string","target","triple equals","tripple equals","type","typeof","undefined"],"functions":[{"description":"strict comparison using typeof against 'undefined'","keywords":["check","comparison","defined","equality","identity","operator","strict","triple equals","type","typeof","undefined"],"codeSample":"typeof d !== 'undefined'","code":"(d) => typeof d !== 'undefined'","time":{"average":"0.00049705696105957031ms","minimum":"0.00029182434082031250ms","maximum":"0.08716011047363281250ms"}},{"description":"loose comparison using typeof against 'undefined'","keywords":["check","comparison","defined","equality","identity","loose","operator","triple equals","type","typeof","undefined"],"codeSample":"typeof d != 'undefined'","code":"(d) => typeof d != 'undefined'","time":{"average":"0.00050647354125976565ms","minimum":"0.00028991699218750000ms","maximum":"0.06692886352539062500ms"}},{"description":"strict comparison using typeof against 'function'","keywords":["comparison","equality","function","identity","operator","strict","tripple equals","type","typeof"],"codeSample":"typeof d === 'function'","code":"(d) => typeof d === 'function'","time":{"average":"0.00043691253662109377ms","minimum":"0.00028038024902343750ms","maximum":"0.07628250122070312500ms"}},{"description":"loose comparison using typeof against 'function'","keywords":["comparison","equality","function","identity","loose","operator","tripple equals","type","typeof"],"codeSample":"typeof d == 'function'","code":"(d) => typeof d == 'function'","time":{"average":"0.00044847869873046876ms","minimum":"0.00027656555175781250ms","maximum":"0.06398773193359375000ms"}},{"description":"strict comparison using typeof against 'number'","keywords":["comparison","equality","identity","number","operator","strict","tripple equals","type","typeof"],"codeSample":"typeof d === 'number'","code":"(d) => typeof d === 'number'","time":{"average":"0.00043970108032226563ms","minimum":"0.00028610229492187500ms","maximum":"0.07193946838378906250ms"}},{"description":"loose comparison using typeof against 'number'","keywords":["comparison","equality","identity","loose","number","operator","tripple equals","type","typeof"],"codeSample":"typeof d == 'number'","code":"(d) => typeof d == 'number'","time":{"average":"0.00044763183593749998ms","minimum":"0.00028228759765625000ms","maximum":"0.06722068786621093750ms"}},{"description":"strict comparison using typeof against 'object'","keywords":["comparison","equality","identity","object","operator","strict","tripple equals","type","typeof"],"codeSample":"typeof d === 'object'","code":"(d) => typeof d === 'object'","time":{"average":"0.00045863723754882812ms","minimum":"0.00028038024902343750ms","maximum":"0.07291984558105468750ms"}},{"description":"loose comparison using typeof against 'object'","keywords":["comparison","equality","identity","loose","object","operator","tripple equals","type","typeof"],"codeSample":"typeof d === 'object'","code":"(d) => typeof d == 'object'","time":{"average":"0.00050008010864257808ms","minimum":"0.00027656555175781250ms","maximum":"0.08344078063964843750ms"}},{"description":"strict comparison using typeof against 'string'","keywords":["comparison","equality","identity","operator","strict","string","tripple equals","type","typeof"],"codeSample":"typeof d === 'string'","code":"(d) => typeof d === 'string'","time":{"average":"0.00053943824768066411ms","minimum":"0.00028610229492187500ms","maximum":"0.06956481933593750000ms"}},{"description":"loose comparison using typeof against 'string'","keywords":["comparison","equality","identity","loose","operator","string","tripple equals","type","typeof"],"codeSample":"typeof d == 'string'","code":"(d) => typeof d == 'string'","time":{"average":"0.00060242080688476560ms","minimum":"0.00027847290039062500ms","maximum":"0.08861160278320312500ms"}},{"description":"Array's isArray() method","keywords":["array","comparison","equality","identity","isArray","method","type"],"codeSample":"Array.isArray(d)","code":"(d) => Array.isArray(d)","time":{"average":"0.00068581199645996091ms","minimum":"0.00036239624023437500ms","maximum":"0.09819984436035156250ms"}},{"description":"double negation, !!, \"not, not\"","keywords":["!","!!","bool","boolean","defined","double","negation","not","notnot","operator","type"],"codeSample":"!!var","code":"(d) => !!d","time":{"average":"0.00051474189758300779ms","minimum":"0.00028038024902343750ms","maximum":"0.07390213012695312500ms"}},{"description":"negation, !, \"not\"","keywords":["!","bool","boolean","defined","negation","not","operator","type"],"codeSample":"!var","code":"(d) => !d","time":{"average":"0.00048213958740234375ms","minimum":"0.00028800964355468750ms","maximum":"0.06769943237304687500ms"}},{"description":"global isNaN() method","keywords":["defined","global","isnan","method","not","not a number","number","type"],"codeSample":"isNaN(var)","code":"(d) => isNaN(d)","time":{"average":"0.06158328628540039179ms","minimum":"0.05314254760742187500ms","maximum":"0.18396759033203125000ms"}},{"description":"Number's isNaN() method","keywords":["defined","isnan","method","not","not a number","number","type"],"codeSample":"Number.isNaN(var)","code":"(d) => Number.isNaN(d)","time":{"average":"0.00068200683593749997ms","minimum":"0.00035667419433593750ms","maximum":"0.11656188964843750000ms"}},{"description":"negated global isNaN()","keywords":["defined","global","isnan","method","nan","not","not a number","number","type"],"codeSample":"!isNaN(var)","code":"(d) => !isNaN(d)","time":{"average":"0.07661922645568847168ms","minimum":"0.05320167541503906250ms","maximum":"0.17065238952636718750ms"}},{"description":"negated Number's isNaN() method","keywords":["defined","isnan","method","nan","not","not a number","number","type"],"codeSample":"!Number.isNaN(var)","code":"(d) => !Number.isNaN(d)","time":{"average":"0.00085909652709960935ms","minimum":"0.00049781799316406250ms","maximum":"0.09854125976562500000ms"}},{"description":"the 'in' operator","keywords":["defined","existence","in","object","operator","prop","property","type"],"codeSample":"prop in obj","code":"(d) => 'num' in d","time":{"average":"0.00073380088806152346ms","minimum":"0.00037574768066406250ms","maximum":"0.09939384460449218750ms"}},{"description":"Object's hasOwnProperty() method called on target","keywords":["defined","existence","hasownproperty","method","object","prop","property","prototype","target","type"],"codeSample":"obj.hasOwnProperty(prop)","code":"(d) => d.hasOwnProperty('num')","time":{"average":"0.00066086769104003909ms","minimum":"0.00039291381835937500ms","maximum":"0.08287429809570312500ms"}},{"description":"Object's hasOwnProperty() method called from Object prototype","keywords":["defined","existence","hasownproperty","method","object","prop","property","prototype","type"],"codeSample":"Object.prototype.hasOwnProperty.call(obj, prop)","code":"(d) => Object.prototype.hasOwnProperty.call(d, 'num')","time":{"average":"0.00080383682250976564ms","minimum":"0.00048065185546875000ms","maximum":"0.12424468994140625000ms"}},{"description":"strict comparison against null and undefined","keywords":["check","comparison","defined","equality","identity","null","operator","strict","tripple equals","undefined"],"codeSample":"!(d === undefined || d === null)","code":"(d) => !(d === undefined || d === null)","time":{"average":"0.00046748352050781251ms","minimum":"0.00029754638671875000ms","maximum":"0.08459854125976562500ms"}},{"description":"loose comparison against null and undefined","keywords":["check","comparison","defined","equality","identity","loose","null","operator","tripple equals","undefined"],"codeSample":"!(d == undefined || d == null)","code":"(d) => !(d == undefined || d == null)","time":{"average":"0.00062322425842285161ms","minimum":"0.00030899047851562500ms","maximum":"0.07363319396972656250ms"}}],"fastest":[{"description":"strict comparison using typeof against 'function'","keywords":["comparison","equality","function","identity","operator","strict","tripple equals","type","typeof"],"codeSample":"typeof d === 'function'","code":"(d) => typeof d === 'function'","time":{"average":"0.00043691253662109377ms","minimum":"0.00028038024902343750ms","maximum":"0.07628250122070312500ms"}}]},{"name":"(de-)composition","description":"(De-)composing objects, variables and arrays from each other.","keywords":["array","assignment","composition","decomposition","default","destructuring","object","rest","swap","tail","values","variables"],"functions":[{"description":"Destructuring an Array","keywords":["array","assignment","composition","decomposition","destructuring"],"codeSample":"const [a,b] = arr","code":"(d) => {\n    const [a, b] = d;\n  }","time":{"average":"0.00180759429931640634ms","minimum":"0.00063323974609375000ms","maximum":"0.14854431152343750000ms"}},{"description":"Destructuring an Array with default values","keywords":["array","assignment","composition","decomposition","default","destructuring","values"],"codeSample":"const [a = i, b] = arr","code":"(d) => {\n    const [a = 5, b] = d;\n  }","time":{"average":"0.00182257843017578133ms","minimum":"0.00065422058105468750ms","maximum":"0.27575874328613281250ms"}},{"description":"Destructuring an Array with tail","keywords":["array","assignment","composition","decomposition","destructuring","rest","tail"],"codeSample":"const [a,b, ...tail] = arr","code":"(d) => {\n    const [a, b, ...tail] = d;\n  }","time":{"average":"0.01630207824707031322ms","minimum":"0.00732612609863281250ms","maximum":"0.62162590026855468750ms"}},{"description":"Destructuring an Object","keywords":["assignment","composition","decomposition","destructuring","object"],"codeSample":"const { a, b } = obj","code":"(d) => {\n    const { num, obj } = d;\n  }","time":{"average":"0.00084140968322753910ms","minimum":"0.00032043457031250000ms","maximum":"0.10913658142089843750ms"}},{"description":"Destructuring an Object with default values","keywords":["assignment","composition","decomposition","default","destructuring","object","values"],"codeSample":"const { a = i } = obj","code":"(d) => {\n    const { num = 5, foo = 'bar' } = d;\n  }","time":{"average":"0.00058823394775390624ms","minimum":"0.00037384033203125000ms","maximum":"0.10416030883789062500ms"}},{"description":"Swapping variables via Array destructuring","keywords":["array","destructuring","swap","variables","composition","decomposition"],"codeSample":"const [a, b] = [b, a]","code":"(d) => {\n    let a = d[0];\n    let b = d[1];\n    [a, b] = [b, a];\n  }","time":{"average":"0.00127507019042968754ms","minimum":"0.00084877014160156250ms","maximum":"0.14931869506835937500ms"}},{"description":"Assignment from array items","keywords":["array","assignment","composition","decomposition"],"codeSample":"const a = arr[i]","code":"(d) => {\n    const a = d[0];\n    const b = d[1];\n  }","time":{"average":"0.00050653648376464849ms","minimum":"0.00030899047851562500ms","maximum":"0.08885383605957031250ms"}},{"description":"Assignment from array items with default","keywords":["array","assignment","composition","decomposition","default","values"],"codeSample":"const a = arr[i] || j","code":"(d) => {\n    const a = d[0] || 5;\n    const b = d[1];\n  }","time":{"average":"0.00086427879333496088ms","minimum":"0.00032424926757812500ms","maximum":"0.08733749389648437500ms"}},{"description":"Assignment from object properties","keywords":["assignment","composition","decomposition","object"],"codeSample":"const a = obj.b","code":"(d) => {\n    const str = d.obj.str;\n  }","time":{"average":"0.00060248756408691408ms","minimum":"0.00031280517578125000ms","maximum":"0.16091346740722656250ms"}},{"description":"Assignment from object properties with default","keywords":["assignment","composition","decomposition","default","object","values"],"codeSample":"const a = obj.b || i","code":"(d) => {\n    const str = d.obj.foo || 'bar';\n  }","time":{"average":"0.00065776443481445313ms","minimum":"0.00035858154296875000ms","maximum":"0.13241195678710937500ms"}},{"description":"Swapping variables via assignment","keywords":["swap","variables","composition","decomposition"],"codeSample":"const c = b; b = a; a = c;","code":"(d) => {\n    let a = d[0];\n    let b = d[1];\n    const c = b;\n    b = a;\n    a = c;\n  }","time":{"average":"0.00058425331115722658ms","minimum":"0.00031280517578125000ms","maximum":"0.12078857421875000000ms"}}],"fastest":[{"description":"Assignment from array items","keywords":["array","assignment","composition","decomposition"],"codeSample":"const a = arr[i]","code":"(d) => {\n    const a = d[0];\n    const b = d[1];\n  }","time":{"average":"0.00050653648376464849ms","minimum":"0.00030899047851562500ms","maximum":"0.08885383605957031250ms"}}]},{"name":"comparison operators","description":"Variable comparison operators.","keywords":["and","boolean","comparison","equal","equality","equals","greater","identity","less","logical","loose","nonequal","not","operator","or","strict","tripple","type"],"functions":[{"description":">, greater than","keywords":["comparison","greater","operator"],"codeSample":"a > b","code":"(d) => d > 5","time":{"average":"0.00048278236389160154ms","minimum":"0.00028419494628906250ms","maximum":"0.06977462768554687500ms"}},{"description":">=, greater than or equal to","keywords":["comparison","equal","greater","operator"],"codeSample":"a >= b","code":"(d) => d >= 5","time":{"average":"0.00075304794311523442ms","minimum":"0.00028610229492187500ms","maximum":"0.17767524719238281250ms"}},{"description":"<, less than","keywords":["comparison","less","operator"],"codeSample":"a < b","code":"(d) => d < 5","time":{"average":"0.00066284370422363284ms","minimum":"0.00028991699218750000ms","maximum":"0.11382865905761718750ms"}},{"description":"<=,less than or equal to","keywords":["comparison","equal","less","operator"],"codeSample":"a <= b","code":"(d) => d <= 5","time":{"average":"0.00064507293701171876ms","minimum":"0.00029182434082031250ms","maximum":"0.15466880798339843750ms"}},{"description":"==, loose equality","keywords":["comparison","equal","equality","loose"],"codeSample":"a == b","code":"(d) => d == 5","time":{"average":"0.00063681602478027344ms","minimum":"0.00029182434082031250ms","maximum":"0.12338638305664062500ms"}},{"description":"===, strict equality, identity, tripple equals","keywords":["comparison","equal","equality","equals","identity","strict","tripple","type"],"codeSample":"a === b","code":"(d) => d === 5","time":{"average":"0.00062407493591308592ms","minimum":"0.00029945373535156250ms","maximum":"0.11930656433105468750ms"}},{"description":"!=, loose non-equality","keywords":["comparison","equal","equality","loose","nonequal","not"],"codeSample":"a != b","code":"(d) => d != 5","time":{"average":"0.00054954910278320315ms","minimum":"0.00030136108398437500ms","maximum":"0.14171218872070312500ms"}},{"description":"!==, strict non-equality","keywords":["comparison","equal","equality","nonequal","not","strict"],"codeSample":"a !== b","code":"(d) => d !== 5","time":{"average":"0.00072648239135742192ms","minimum":"0.00030708312988281250ms","maximum":"0.11626625061035156250ms"}},{"description":"&&, logical and operator","keywords":["and","boolean","comparison","logical","operator"],"codeSample":"a && b","code":"(d) => d && d - 5","time":{"average":"0.00058376312255859375ms","minimum":"0.00032806396484375000ms","maximum":"0.12041282653808593750ms"}},{"description":"||, logical or operator","keywords":["boolean","comparison","logical","operator","or"],"codeSample":"a || b","code":"(d) => d || d - 5","time":{"average":"0.00064640235900878908ms","minimum":"0.00031471252441406250ms","maximum":"0.12758445739746093750ms"}}],"fastest":[{"description":">, greater than","keywords":["comparison","greater","operator"],"codeSample":"a > b","code":"(d) => d > 5","time":{"average":"0.00048278236389160154ms","minimum":"0.00028419494628906250ms","maximum":"0.06977462768554687500ms"}}]},{"name":"comparison statements","description":"Comparison statements: conditionally branching in a function based on simple comparisons.","keywords":["and","branching","break","comparison","control flow","control structure","else","else if","expression","flow","if","or","statement","switch","ternary"],"functions":[{"description":"if statement","keywords":["if","comparison","statement","else","else if","branching","control structure","control flow","flow"],"codeSample":"if (d > 0) { return d / 2; }","code":"(d) => {\n    if (d === 0) {\n      return d;\n    } else if (d > 0) {\n      return d / 2;\n    } else {\n      return 0;\n    }\n  }","time":{"average":"0.00073217964172363279ms","minimum":"0.00036239624023437500ms","maximum":"0.13100814819335937500ms"}},{"description":"switch statement","keywords":["switch","comparison","statement","break","branching","control structure","control flow","flow"],"codeSample":"switch (d) { case 0: return d; default: return d / 2; }","code":"(d) => {\n    switch (d) {\n      case 0:\n        return d;\n      default:\n        return d / 2;\n    }\n  }","time":{"average":"0.00073569297790527339ms","minimum":"0.00035667419433593750ms","maximum":"0.14153671264648437500ms"}},{"description":"ternary expression","keywords":["ternary","expression","comparison","statement","branching","control structure","control flow","flow"],"codeSample":"d > 0 ? d / 2 : d","code":"(d) => d > 0 ? d / 2 : d","time":{"average":"0.00075840187072753903ms","minimum":"0.00035858154296875000ms","maximum":"0.12512779235839843750ms"}},{"description":"and-or, && ||","keywords":["and","or","comparison","statement","expression","branching","control structure","control flow","flow"],"codeSample":"(d > 0 && d / 2) || d","code":"(d) => (d > 0 && d / 2) || d","time":{"average":"0.00066635322570800779ms","minimum":"0.00036048889160156250ms","maximum":"0.12690925598144531250ms"}}],"fastest":[{"description":"and-or, && ||","keywords":["and","or","comparison","statement","expression","branching","control structure","control flow","flow"],"codeSample":"(d > 0 && d / 2) || d","code":"(d) => (d > 0 && d / 2) || d","time":{"average":"0.00066635322570800779ms","minimum":"0.00036048889160156250ms","maximum":"0.12690925598144531250ms"}}]},{"name":"array copying","description":"Array copying/cloning variations: creating a new array with the same elements as an existing array.","keywords":["append","apply","array","assign","clone","concat","constructor","copy","for","from","insert","literal","loop","method","new","preallocate","prepend","push","set","slice","spread","syntax","unshift"],"functions":[{"description":"Array's slice() method","keywords":["array","clone","copy","method","slice"],"codeSample":"a.slice()","code":"(d) => d[0].slice()","time":{"average":"0.00271449470520019514ms","minimum":"0.00179862976074218750ms","maximum":"0.13947296142578125000ms"}},{"description":"copy using Array spread syntax","keywords":["array","clone","copy","spread","syntax"],"codeSample":"[...a]","code":"(d) => [...d[0]]","time":{"average":"0.00327848243713378890ms","minimum":"0.00174903869628906250ms","maximum":"0.14957046508789062500ms"}},{"description":"copy using Array.from()","keywords":["array","clone","copy","from","method"],"codeSample":"Array.from(a)","code":"(d) => Array.from(d[0])","time":{"average":"0.00369814300537109385ms","minimum":"0.00186347961425781250ms","maximum":"0.21040153503417968750ms"}},{"description":"spread into Array constructor","keywords":["array","clone","copy","new","constructor"],"codeSample":"new Array(...a)","code":"(d) => new Array(...d[0])","time":{"average":"0.00992577743530273504ms","minimum":"0.00813484191894531250ms","maximum":"0.22385215759277343750ms"}},{"description":"concatenate empty Array literal","keywords":["array","clone","copy","concat","method"],"codeSample":"a.concat([])","code":"(d) => d[0].concat([])","time":{"average":"0.00478548431396484415ms","minimum":"0.00229263305664062500ms","maximum":"0.30861473083496093750ms"}},{"description":"concatenate onto empty Array literal","keywords":["array","clone","copy","concat","method"],"codeSample":"[].concat(a)","code":"(d) => [].concat(d[0])","time":{"average":"0.00340050697326660161ms","minimum":"0.00186538696289062500ms","maximum":"0.14328956604003906250ms"}},{"description":"prepend to empty Array literal","keywords":["array","clone","copy","literal","apply","unshift","prepend","insert"],"codeSample":"b = []; Array.prototype.unshift.apply(b, a)","code":"(d) => {\n    const b = [];\n    Array.prototype.unshift.apply(b, d[0]);\n    return b;\n  }","time":{"average":"0.00886196899414062531ms","minimum":"0.00578689575195312500ms","maximum":"0.21173477172851562500ms"}},{"description":"prepend to constructed Array","keywords":["array","clone","copy","preallocate","apply","unshift","prepend","insert","constructor","new"],"codeSample":"b = new Array(); Array.prototype.unshift.apply(b, a)","code":"(d) => {\n    const b = new Array();\n    Array.prototype.unshift.apply(b, d[0]);\n    return b;\n  }","time":{"average":"0.01044968032836914029ms","minimum":"0.00590705871582031250ms","maximum":"0.32355880737304687500ms"}},{"description":"append to Array literal using spread","keywords":["array","clone","copy","literal","apply","push","spread","append","insert"],"codeSample":"b = []; b.push(...a)","code":"(d) => {\n    const b = [];\n    b.push(...d[0]);\n    return b;\n  }","time":{"average":"0.00629697799682617156ms","minimum":"0.00384712219238281250ms","maximum":"0.19989204406738281250ms"}},{"description":"append to constructed Array in a for loop","keywords":["array","clone","copy","preallocate","constructor","new","push","append","insert"],"codeSample":"b = new Array(); for (...) { b.push(a[i]) }","code":"(d) => {\n    const a = d[0];\n    const b = new Array();\n    const { length } = a;\n    for (let i = 0; i < length; i++) {\n      b.push(a[i]);\n    }\n\n    return b;\n  }","time":{"average":"0.01543693542480468681ms","minimum":"0.00838661193847656250ms","maximum":"0.41977500915527343750ms"}},{"description":"append to constructed Array using spread","keywords":["array","clone","copy","preallocate","constructor","new","push","spread","append","insert"],"codeSample":"b = new Array(); b.push(...a)","code":"(d) => {\n    const b = new Array();\n    b.push(...d[0]);\n    return b;\n  }","time":{"average":"0.00697175407409667946ms","minimum":"0.00396728515625000000ms","maximum":"0.21105194091796875000ms"}},{"description":"append to Array literal in a for loop","keywords":["array","clone","copy","push","for","loop","append","insert","literal"],"codeSample":"b = []; for (...) { b.push(a[i]) }","code":"(d) => {\n    const a = d[0];\n    const b = [];\n    const { length } = a;\n    for (let i = 0; i < length; ++i) {\n      b.push(a[i]);\n    }\n\n    return b;\n  }","time":{"average":"0.01496477508544921849ms","minimum":"0.00821685791015625000ms","maximum":"0.39954185485839843750ms"}},{"description":"preallocate new Array and assign values in a for loop","keywords":["array","clone","copy","preallocate","set","for","loop","assign","constructor","new"],"codeSample":"b = new Array(a.length); for (...) { b[i] = a[i]; }","code":"(d) => {\n    const a = d[0];\n    const { length } = a;\n    const b = new Array(length);\n    for (let i = 0; i < length; ++i) {\n      b[i] = a[i];\n    }\n\n    return b;\n  }","time":{"average":"0.00733406448364257776ms","minimum":"0.00201034545898437500ms","maximum":"0.37510681152343750000ms"}}],"fastest":[{"description":"Array's slice() method","keywords":["array","clone","copy","method","slice"],"codeSample":"a.slice()","code":"(d) => d[0].slice()","time":{"average":"0.00271449470520019514ms","minimum":"0.00179862976074218750ms","maximum":"0.13947296142578125000ms"}}]},{"name":"array concatenation","description":"Array concatenation variations: Combining two arrays using different techniques.","keywords":["append","apply","array","concat","concatenation","for","insert","loop","method","prepend","push","reduce","reduceright","spread","syntax","unshift"],"functions":[{"description":"Array's concat() method","keywords":["array","concat","concatenation","method"],"codeSample":"a.concat(b)","code":"(d) => d[0].concat(d[1])","time":{"average":"0.00652451705932617209ms","minimum":"0.00399398803710937500ms","maximum":"0.18710708618164062500ms"}},{"description":"append elements in a for loop","keywords":["append","array","concatenation","for","insert","loop","push"],"codeSample":"for (...) { a.push(b[i]) }","code":"(d) => {\n    for (let i = 0; i < d[1].length; i++) {\n      d[0].push(d[1][i]);\n    }\n\n    return d[0];\n  }","time":{"average":"0.07814558029174804854ms","minimum":"0.00659942626953125000ms","maximum":"32.94646072387695312500ms"}},{"description":"prepend elements in a foor loop","keywords":["array","concatenation","for","insert","loop","prepend","unshift"],"codeSample":"for (...) { b.unshift(a[i]) }","code":"(d) => {\n    for (let i = d[0].length - 1; i >= 0; i--) {\n      d[1].unshift(d[0][i]);\n    }\n\n    return d[1];\n  }","time":{"average":"1572.99261359405522853194ms","minimum":"4.69906806945800781250ms","maximum":"3803.81754875183105468750ms"}},{"description":"append elements using apply()","keywords":["append","apply","array","concatenation","insert","push"],"codeSample":"a.push.apply(a, b)","code":"(d) => {\n    d[0].push.apply(d[0], d[1]);\n    return d[0];\n  }","time":{"average":"0.06014873886108398210ms","minimum":"0.00249099731445312500ms","maximum":"13.68009757995605468750ms"}},{"description":"prepend elements using apply()","keywords":["apply","array","concatenation","insert","prepend","unshift"],"codeSample":"b.unshift.apply(b, a)","code":"(d) => {\n    d[1].unshift.apply(d[1], d[0]);\n    return d[1];\n  }","time":{"average":"1.50356183242797847299ms","minimum":"0.00941085815429687500ms","maximum":"9.03608703613281250000ms"}},{"description":"append elements using reduce()","keywords":["append","array","concatenation","insert","push","reduce"],"codeSample":"b.reduce((arr, item) => arr.push(item), a)","code":"(d) => d[1].reduce((r, i) => {\n    r.push(i);\n    return r;\n  }, d[0])","time":{"average":"0.06915768814086914462ms","minimum":"0.01574707031250000000ms","maximum":"15.42547035217285156250ms"}},{"description":"prepend elements using reduceRight()","keywords":["array","concatenation","insert","prepend","reduce","reduceright","unshift"],"codeSample":"a.reduceRight((arr, item) => arr.unshift(item), b)","code":"(d) => d[0].reduceRight((r, i) => {\n    r.unshift(i);\n    return r;\n  }, d[1])","time":{"average":"1559.47448096466064271226ms","minimum":"9.90542984008789062500ms","maximum":"3614.16113281250000000000ms"}},{"description":"prepend elements using array spread syntax","keywords":["array","concatenation","insert","prepend","spread","syntax"],"codeSample":"[...a, ...b]","code":"(d) => [...d[0], ...d[1]]","time":{"average":"0.03727709579467773648ms","minimum":"0.00843238830566406250ms","maximum":"1.25041198730468750000ms"}}],"fastest":[{"description":"Array's concat() method","keywords":["array","concat","concatenation","method"],"codeSample":"a.concat(b)","code":"(d) => d[0].concat(d[1])","time":{"average":"0.00652451705932617209ms","minimum":"0.00399398803710937500ms","maximum":"0.18710708618164062500ms"}}]}],"createdAt":"2026-06-15T05:27:26.474Z"}