Best JavaScript code snippet using best
index.ts
Source:index.ts
1export type RecursiveObject<K extends string, V> = { [P in K]?: RecursiveObject<K, V> | V };2export type CompositeObjectCopyMethod = "reference" | "on-write" | "keys";3export interface CompositeObjectOptions {4 /**5 * Indicates when CompositeObject or RecursiveObject key data passed to the constructor is copied.6 * * "reference": Never copy key data, referencing the original data instead. The most performant option. Only7 * supported for copying a RecursiveObject.8 * * "on-write": Copy the data as necessary when changes are made. Incurs a performance pentalty, but preserves9 * the original data.10 * * "keys": Copy the key data. More performant than "on-write" when there are few entries, but less performant11 * when there are many. This is the default option.12 */13 copy?: CompositeObjectCopyMethod;14 /**15 * Indicates the length of the key for this map. Only used when constructing using a RecursiveObject since the16 * key-length cannot be inferred.17 */18 keyLength?: number;19}20// NOTE: Symbols are not supported because they do not interate with other properties, which also affects pruning21// performance.22export class CompositeObject<K extends string, V> {23 private data: RecursiveObject<K, V>;24 private keyLength: number;25 private copiedSet?: WeakSet<RecursiveObject<K, V>>;26 constructor();27 constructor(entries: CompositeObject<K, V>, options?: CompositeObjectOptions);28 constructor(entries: RecursiveObject<K, V>, options: CompositeObjectOptions & { keyLength: number });29 constructor(entries?: CompositeObject<K, V> | RecursiveObject<K, V>, options?: CompositeObjectOptions) {30 if (!entries) {31 this.copiedSet = undefined;32 this.keyLength = 0;33 this.data = {};34 } else if (entries instanceof CompositeObject) {35 const copyMethod: CompositeObjectCopyMethod = (options && options.copy) || "keys";36 switch (copyMethod) {37 case "keys":38 this.copiedSet = undefined;39 this.keyLength = entries.keyLength;40 this.data = copyMaps(entries.data, entries.keyLength, 0);41 break;42 case "on-write":43 // When using copy-on-write, map being copied must also use copy-on-write mode44 this.copiedSet = entries.copiedSet = new WeakSet();45 this.keyLength = entries.keyLength;46 this.data = entries.data;47 break;48 case "reference":49 throw new Error(`Copy method '${copyMethod}' is not supported when copying CompositeObject`);50 default:51 throw new Error(`Unrecognized copy method '${copyMethod}'`);52 }53 } else {54 this.keyLength = (options && options.keyLength) || 0;55 if (!this.keyLength) {56 throw new Error("Object inputs require a non-zero value for options.keyLength");57 }58 const copyMethod: CompositeObjectCopyMethod = (options && options.copy) || "keys";59 switch (copyMethod) {60 case "on-write":61 this.copiedSet = new WeakSet();62 this.data = entries;63 break;64 case "reference":65 this.copiedSet = undefined;66 this.data = entries;67 break;68 case "keys":69 this.copiedSet = undefined;70 this.data = copyRecursiveObject(this.keyLength - 1, entries, 0);71 break;72 default:73 throw new Error(`Unrecognized copy method '${copyMethod}'`);74 }75 }76 }77 public set(key: K[], value: V): this {78 if (key.length !== this.keyLength) {79 if (!this.keyLength) {80 this.keyLength = key.length;81 } else {82 throw Error("Invalid key length");83 }84 }85 let obj: RecursiveObject<K, V> = this.data;86 if (this.copiedSet && !this.copiedSet.has(obj)) {87 this.data = obj = { ...obj };88 this.copiedSet.add(obj);89 }90 const lastPartIndex = key.length - 1;91 for (let i = 0; i < lastPartIndex; i++) {92 const keyPart = key[i];93 let nextObj = obj[keyPart] as RecursiveObject<K, V>;94 if (!nextObj) {95 nextObj = {};96 obj[keyPart] = nextObj;97 if (this.copiedSet) {98 this.copiedSet.add(nextObj);99 }100 } else if (this.copiedSet && !this.copiedSet.has(nextObj)) {101 nextObj = { ...nextObj };102 this.copiedSet.add(nextObj);103 obj[keyPart] = nextObj;104 }105 obj = nextObj;106 }107 obj[key[lastPartIndex]] = value;108 return this;109 }110 public clear(): void {111 this.data = {};112 this.copiedSet = undefined;113 this.keyLength = 0;114 }115 public delete(key: K[]): boolean {116 if (!this.keyLength) {117 this.clear();118 return false;119 }120 if (!key.length) {121 if (!hasProps(this.data)) {122 this.clear();123 return false;124 }125 this.clear();126 return true;127 }128 if (key.length > this.keyLength) {129 throw Error("Invalid key length");130 }131 let obj = this.data;132 const objs: Array<RecursiveObject<K, V>> = [obj];133 const lastKeyPos = key.length - 1;134 for (let i = 0; i < lastKeyPos; i++) {135 obj = obj[key[i]] as RecursiveObject<K, V>;136 if (!obj) {137 return false;138 }139 objs[i + 1] = obj;140 }141 if (!obj.hasOwnProperty(key[lastKeyPos])) {142 return false;143 }144 // Prune the tree145 let deletePoint: number = lastKeyPos;146 for (; deletePoint > 0; deletePoint--) {147 obj = objs[deletePoint];148 if (hasOtherProps(obj, key[deletePoint])) {149 // Every map has been checked that the corresponding key is present, so if there is only150 // one element, it must belong to the key we are removing.151 break;152 }153 }154 if (this.copiedSet) {155 let prevObj!: RecursiveObject<K, V>;156 for (let i = 0; i <= deletePoint; i++) {157 obj = objs[i];158 if (!this.copiedSet.has(obj)) {159 obj = { ...obj };160 this.copiedSet.add(obj);161 if (i === 0) {162 this.data = obj;163 } else {164 prevObj[key[i - 1]] = obj;165 }166 }167 prevObj = obj;168 }169 } else {170 obj = objs[deletePoint];171 }172 delete obj[key[deletePoint]];173 return true;174 }175 public has(key: K[]): boolean {176 if (!this.keyLength) {177 return false;178 }179 if (!key.length) {180 return hasProps(this.data);181 }182 if (key.length > this.keyLength) {183 throw Error("Invalid key length");184 }185 let obj: RecursiveObject<K, V> = this.data;186 const lastKeyPos = key.length - 1;187 for (let i = 0; i < lastKeyPos; i++) {188 obj = obj[key[i]] as RecursiveObject<K, V>;189 if (!obj) {190 return false;191 }192 }193 return obj.hasOwnProperty(key[lastKeyPos]);194 }195 public get(key: K[]): V | RecursiveObject<K, V> | undefined {196 if (!key.length) {197 return this.data;198 }199 if (!this.keyLength) {200 return undefined;201 }202 if (key.length > this.keyLength) {203 throw Error("Invalid key length");204 }205 let obj: RecursiveObject<K, V> = this.data;206 const lastKeyPos = key.length - 1;207 for (let i = 0; i < lastKeyPos; i++) {208 obj = obj[key[i]] as RecursiveObject<K, V>;209 if (!obj) {210 return undefined;211 }212 }213 return obj[key[lastKeyPos]];214 }215 public entries(): IterableIterator<[K[], V]> {216 return recurseEntries(this.keyLength - 1, 0, [], this.data);217 }218 public keys(): IterableIterator<K[]> {219 return recurseKeys(this.keyLength - 1, 0, [], this.data);220 }221 public values(): IterableIterator<V> {222 return recurseValues(this.keyLength - 1, 0, this.data);223 }224 public [Symbol.iterator](): IterableIterator<[K[], V]> {225 return this.entries();226 }227 public forEach(callbackfn: (value: V, key: K[]) => void): void {228 if (callbackfn.length < 2) {229 recurseForEachValue(callbackfn as (value: V) => void, this.keyLength - 1, this.data, 0);230 } else {231 recurseForEach(callbackfn, this.keyLength - 1, this.data, [], 0);232 }233 }234 public toJSON(): RecursiveObject<K, V> {235 return this.data;236 }237}238// tslint:disable:variable-name239export const CompositeObject1 = CompositeObject;240export const CompositeObject2 = CompositeObject;241export const CompositeObject3 = CompositeObject;242export const CompositeObject4 = CompositeObject;243export const CompositeObject5 = CompositeObject;244export const CompositeObject6 = CompositeObject;245export const CompositeObject7 = CompositeObject;246export const CompositeObject8 = CompositeObject;247export const CompositeObject9 = CompositeObject;248// tslint:enable:variable-name249function hasOtherProps(obj: object, prop: string): boolean {250 for (const key in obj) {251 if (obj.hasOwnProperty(key) && key !== prop) {252 return true;253 }254 }255 return false;256}257function hasProps(obj: object): boolean {258 for (const key in obj) {259 if (obj.hasOwnProperty(key)) {260 return true;261 }262 }263 return false;264}265function copyMaps<K extends string, V>(266 map: RecursiveObject<K, V>,267 keyLength: number,268 level: number,269): RecursiveObject<K, V> {270 if (level >= keyLength - 1) {271 return { ...map };272 }273 const mapCopy: RecursiveObject<K, V> = {};274 for (const key in map) {275 if (map.hasOwnProperty(key)) {276 mapCopy[key] = copyMaps(map[key] as RecursiveObject<K, V>, keyLength, level + 1);277 }278 }279 return mapCopy;280}281function recurseForEach<K extends string, V>(282 callbackfn: (value: V, key: K[]) => void,283 lastKeyPos: number,284 obj: RecursiveObject<K, V>,285 keyPart: K[],286 keyPos: number,287): void {288 if (keyPos === lastKeyPos) {289 for (const key in obj) {290 if (obj.hasOwnProperty(key)) {291 const key2 = keyPart.slice();292 key2[keyPos] = key;293 callbackfn(obj[key] as V, key2);294 }295 }296 } else {297 for (const key in obj) {298 if (obj.hasOwnProperty(key)) {299 keyPart[keyPos] = key;300 recurseForEach(callbackfn, lastKeyPos, obj[key] as RecursiveObject<K, V>, keyPart, keyPos + 1);301 }302 }303 }304}305function recurseForEachValue<K extends string, V>(306 callbackfn: (value: V) => void,307 lastKeyPos: number,308 obj: RecursiveObject<K, V>,309 keyPos: number,310): void {311 if (keyPos === lastKeyPos) {312 for (const key in obj) {313 if (obj.hasOwnProperty(key)) {314 callbackfn(obj[key] as V);315 }316 }317 } else {318 for (const key in obj) {319 if (obj.hasOwnProperty(key)) {320 recurseForEachValue(callbackfn, lastKeyPos, obj[key] as RecursiveObject<K, V>, keyPos + 1);321 }322 }323 }324}325function copyRecursiveObject<K extends string, V>(326 lastKeyPos: number,327 obj: RecursiveObject<K, V>,328 level: number,329): RecursiveObject<K, V> {330 const objCopy: RecursiveObject<K, V> = {};331 let keyElement: K;332 if (level >= lastKeyPos) {333 for (keyElement in obj) {334 if (obj.hasOwnProperty(keyElement)) {335 objCopy[keyElement] = obj[keyElement];336 }337 }338 } else {339 for (keyElement in obj) {340 if (obj.hasOwnProperty(keyElement)) {341 objCopy[keyElement] = copyRecursiveObject(342 lastKeyPos,343 obj[keyElement] as RecursiveObject<K, V>,344 level + 1,345 );346 }347 }348 }349 return objCopy;350}351function* recurseEntries<K extends string, V>(352 lastKeyIndex: number,353 keyIndex: number,354 key: K[],355 obj: RecursiveObject<K, V>,356): IterableIterator<[K[], V]> {357 let keyPart: K;358 if (keyIndex >= lastKeyIndex) {359 for (keyPart in obj) {360 if (obj.hasOwnProperty(keyPart)) {361 const keyCopy = key.slice();362 keyCopy[keyIndex] = keyPart;363 yield [keyCopy, obj[keyPart] as V];364 }365 }366 } else {367 for (keyPart in obj) {368 if (obj.hasOwnProperty(keyPart)) {369 key[keyIndex] = keyPart;370 yield* recurseEntries(lastKeyIndex, keyIndex + 1, key, obj[keyPart] as RecursiveObject<K, V>);371 }372 }373 }374}375function* recurseKeys<K extends string, V>(376 lastKeyIndex: number,377 keyIndex: number,378 key: K[],379 obj: RecursiveObject<K, V>,380): IterableIterator<K[]> {381 let keyPart: K;382 if (keyIndex >= lastKeyIndex) {383 for (keyPart in obj) {384 if (obj.hasOwnProperty(keyPart)) {385 const keyCopy = key.slice();386 keyCopy[keyIndex] = keyPart;387 yield keyCopy;388 }389 }390 } else {391 for (keyPart in obj) {392 if (obj.hasOwnProperty(keyPart)) {393 key[keyIndex] = keyPart;394 yield* recurseKeys(lastKeyIndex, keyIndex + 1, key, obj[keyPart] as RecursiveObject<K, V>);395 }396 }397 }398}399function* recurseValues<K extends string, V>(400 lastKeyIndex: number,401 keyIndex: number,402 obj: RecursiveObject<K, V>,403): IterableIterator<V> {404 let keyPart: K;405 if (keyIndex >= lastKeyIndex) {406 for (keyPart in obj) {407 if (obj.hasOwnProperty(keyPart)) {408 yield obj[keyPart] as V;409 }410 }411 } else {412 for (keyPart in obj) {413 if (obj.hasOwnProperty(keyPart)) {414 yield* recurseValues(lastKeyIndex, keyIndex + 1, obj[keyPart] as RecursiveObject<K, V>);415 }416 }417 }...
index.js
Source:index.js
1"use strict";2Object.defineProperty(exports, "__esModule", { value: true });3// NOTE: Symbols are not supported because they do not interate with other properties, which also affects pruning4// performance.5class CompositeObject {6 constructor(entries, options) {7 if (!entries) {8 this.copiedSet = undefined;9 this.keyLength = 0;10 this.data = {};11 }12 else if (entries instanceof CompositeObject) {13 const copyMethod = (options && options.copy) || "keys";14 switch (copyMethod) {15 case "keys":16 this.copiedSet = undefined;17 this.keyLength = entries.keyLength;18 this.data = copyMaps(entries.data, entries.keyLength, 0);19 break;20 case "on-write":21 // When using copy-on-write, map being copied must also use copy-on-write mode22 this.copiedSet = entries.copiedSet = new WeakSet();23 this.keyLength = entries.keyLength;24 this.data = entries.data;25 break;26 case "reference":27 throw new Error(`Copy method '${copyMethod}' is not supported when copying CompositeObject`);28 default:29 throw new Error(`Unrecognized copy method '${copyMethod}'`);30 }31 }32 else {33 this.keyLength = (options && options.keyLength) || 0;34 if (!this.keyLength) {35 throw new Error("Object inputs require a non-zero value for options.keyLength");36 }37 const copyMethod = (options && options.copy) || "keys";38 switch (copyMethod) {39 case "on-write":40 this.copiedSet = new WeakSet();41 this.data = entries;42 break;43 case "reference":44 this.copiedSet = undefined;45 this.data = entries;46 break;47 case "keys":48 this.copiedSet = undefined;49 this.data = copyRecursiveObject(this.keyLength - 1, entries, 0);50 break;51 default:52 throw new Error(`Unrecognized copy method '${copyMethod}'`);53 }54 }55 }56 set(key, value) {57 if (key.length !== this.keyLength) {58 if (!this.keyLength) {59 this.keyLength = key.length;60 }61 else {62 throw Error("Invalid key length");63 }64 }65 let obj = this.data;66 if (this.copiedSet && !this.copiedSet.has(obj)) {67 this.data = obj = Object.assign({}, obj);68 this.copiedSet.add(obj);69 }70 const lastPartIndex = key.length - 1;71 for (let i = 0; i < lastPartIndex; i++) {72 const keyPart = key[i];73 let nextObj = obj[keyPart];74 if (!nextObj) {75 nextObj = {};76 obj[keyPart] = nextObj;77 if (this.copiedSet) {78 this.copiedSet.add(nextObj);79 }80 }81 else if (this.copiedSet && !this.copiedSet.has(nextObj)) {82 nextObj = Object.assign({}, nextObj);83 this.copiedSet.add(nextObj);84 obj[keyPart] = nextObj;85 }86 obj = nextObj;87 }88 obj[key[lastPartIndex]] = value;89 return this;90 }91 clear() {92 this.data = {};93 this.copiedSet = undefined;94 this.keyLength = 0;95 }96 delete(key) {97 if (!this.keyLength) {98 this.clear();99 return false;100 }101 if (!key.length) {102 if (!hasProps(this.data)) {103 this.clear();104 return false;105 }106 this.clear();107 return true;108 }109 if (key.length > this.keyLength) {110 throw Error("Invalid key length");111 }112 let obj = this.data;113 const objs = [obj];114 const lastKeyPos = key.length - 1;115 for (let i = 0; i < lastKeyPos; i++) {116 obj = obj[key[i]];117 if (!obj) {118 return false;119 }120 objs[i + 1] = obj;121 }122 if (!obj.hasOwnProperty(key[lastKeyPos])) {123 return false;124 }125 // Prune the tree126 let deletePoint = lastKeyPos;127 for (; deletePoint > 0; deletePoint--) {128 obj = objs[deletePoint];129 if (hasOtherProps(obj, key[deletePoint])) {130 // Every map has been checked that the corresponding key is present, so if there is only131 // one element, it must belong to the key we are removing.132 break;133 }134 }135 if (this.copiedSet) {136 let prevObj;137 for (let i = 0; i <= deletePoint; i++) {138 obj = objs[i];139 if (!this.copiedSet.has(obj)) {140 obj = Object.assign({}, obj);141 this.copiedSet.add(obj);142 if (i === 0) {143 this.data = obj;144 }145 else {146 prevObj[key[i - 1]] = obj;147 }148 }149 prevObj = obj;150 }151 }152 else {153 obj = objs[deletePoint];154 }155 delete obj[key[deletePoint]];156 return true;157 }158 has(key) {159 if (!this.keyLength) {160 return false;161 }162 if (!key.length) {163 return hasProps(this.data);164 }165 if (key.length > this.keyLength) {166 throw Error("Invalid key length");167 }168 let obj = this.data;169 const lastKeyPos = key.length - 1;170 for (let i = 0; i < lastKeyPos; i++) {171 obj = obj[key[i]];172 if (!obj) {173 return false;174 }175 }176 return obj.hasOwnProperty(key[lastKeyPos]);177 }178 get(key) {179 if (!key.length) {180 return this.data;181 }182 if (!this.keyLength) {183 return undefined;184 }185 if (key.length > this.keyLength) {186 throw Error("Invalid key length");187 }188 let obj = this.data;189 const lastKeyPos = key.length - 1;190 for (let i = 0; i < lastKeyPos; i++) {191 obj = obj[key[i]];192 if (!obj) {193 return undefined;194 }195 }196 return obj[key[lastKeyPos]];197 }198 entries() {199 return recurseEntries(this.keyLength - 1, 0, [], this.data);200 }201 keys() {202 return recurseKeys(this.keyLength - 1, 0, [], this.data);203 }204 values() {205 return recurseValues(this.keyLength - 1, 0, this.data);206 }207 [Symbol.iterator]() {208 return this.entries();209 }210 forEach(callbackfn) {211 if (callbackfn.length < 2) {212 recurseForEachValue(callbackfn, this.keyLength - 1, this.data, 0);213 }214 else {215 recurseForEach(callbackfn, this.keyLength - 1, this.data, [], 0);216 }217 }218 toJSON() {219 return this.data;220 }221}222exports.CompositeObject = CompositeObject;223// tslint:disable:variable-name224exports.CompositeObject1 = CompositeObject;225exports.CompositeObject2 = CompositeObject;226exports.CompositeObject3 = CompositeObject;227exports.CompositeObject4 = CompositeObject;228exports.CompositeObject5 = CompositeObject;229exports.CompositeObject6 = CompositeObject;230exports.CompositeObject7 = CompositeObject;231exports.CompositeObject8 = CompositeObject;232exports.CompositeObject9 = CompositeObject;233// tslint:enable:variable-name234function hasOtherProps(obj, prop) {235 for (const key in obj) {236 if (obj.hasOwnProperty(key) && key !== prop) {237 return true;238 }239 }240 return false;241}242function hasProps(obj) {243 for (const key in obj) {244 if (obj.hasOwnProperty(key)) {245 return true;246 }247 }248 return false;249}250function copyMaps(map, keyLength, level) {251 if (level >= keyLength - 1) {252 return Object.assign({}, map);253 }254 const mapCopy = {};255 for (const key in map) {256 if (map.hasOwnProperty(key)) {257 mapCopy[key] = copyMaps(map[key], keyLength, level + 1);258 }259 }260 return mapCopy;261}262function recurseForEach(callbackfn, lastKeyPos, obj, keyPart, keyPos) {263 if (keyPos === lastKeyPos) {264 for (const key in obj) {265 if (obj.hasOwnProperty(key)) {266 const key2 = keyPart.slice();267 key2[keyPos] = key;268 callbackfn(obj[key], key2);269 }270 }271 }272 else {273 for (const key in obj) {274 if (obj.hasOwnProperty(key)) {275 keyPart[keyPos] = key;276 recurseForEach(callbackfn, lastKeyPos, obj[key], keyPart, keyPos + 1);277 }278 }279 }280}281function recurseForEachValue(callbackfn, lastKeyPos, obj, keyPos) {282 if (keyPos === lastKeyPos) {283 for (const key in obj) {284 if (obj.hasOwnProperty(key)) {285 callbackfn(obj[key]);286 }287 }288 }289 else {290 for (const key in obj) {291 if (obj.hasOwnProperty(key)) {292 recurseForEachValue(callbackfn, lastKeyPos, obj[key], keyPos + 1);293 }294 }295 }296}297function copyRecursiveObject(lastKeyPos, obj, level) {298 const objCopy = {};299 let keyElement;300 if (level >= lastKeyPos) {301 for (keyElement in obj) {302 if (obj.hasOwnProperty(keyElement)) {303 objCopy[keyElement] = obj[keyElement];304 }305 }306 }307 else {308 for (keyElement in obj) {309 if (obj.hasOwnProperty(keyElement)) {310 objCopy[keyElement] = copyRecursiveObject(lastKeyPos, obj[keyElement], level + 1);311 }312 }313 }314 return objCopy;315}316function* recurseEntries(lastKeyIndex, keyIndex, key, obj) {317 let keyPart;318 if (keyIndex >= lastKeyIndex) {319 for (keyPart in obj) {320 if (obj.hasOwnProperty(keyPart)) {321 const keyCopy = key.slice();322 keyCopy[keyIndex] = keyPart;323 yield [keyCopy, obj[keyPart]];324 }325 }326 }327 else {328 for (keyPart in obj) {329 if (obj.hasOwnProperty(keyPart)) {330 key[keyIndex] = keyPart;331 yield* recurseEntries(lastKeyIndex, keyIndex + 1, key, obj[keyPart]);332 }333 }334 }335}336function* recurseKeys(lastKeyIndex, keyIndex, key, obj) {337 let keyPart;338 if (keyIndex >= lastKeyIndex) {339 for (keyPart in obj) {340 if (obj.hasOwnProperty(keyPart)) {341 const keyCopy = key.slice();342 keyCopy[keyIndex] = keyPart;343 yield keyCopy;344 }345 }346 }347 else {348 for (keyPart in obj) {349 if (obj.hasOwnProperty(keyPart)) {350 key[keyIndex] = keyPart;351 yield* recurseKeys(lastKeyIndex, keyIndex + 1, key, obj[keyPart]);352 }353 }354 }355}356function* recurseValues(lastKeyIndex, keyIndex, obj) {357 let keyPart;358 if (keyIndex >= lastKeyIndex) {359 for (keyPart in obj) {360 if (obj.hasOwnProperty(keyPart)) {361 yield obj[keyPart];362 }363 }364 }365 else {366 for (keyPart in obj) {367 if (obj.hasOwnProperty(keyPart)) {368 yield* recurseValues(lastKeyIndex, keyIndex + 1, obj[keyPart]);369 }370 }371 }...
eg.js
Source:eg.js
1let keyPart = 0;2document.addEventListener('keydown', (event) => {3 let name = event.key;4 let code = event.code;5 // Alert the key name and key code on keydown6 // alert(`Key pressed ${name} \r\n Key code value: ${code}`);7 console.log(keyPart);8 switch (keyPart) {9 case 0:10 if(name == 'D'){11 keyPart++;12 }else{13 keyPart = 014 }15 break;16 case 1:17 if(name == 'E'){18 keyPart++;19 }else{20 keyPart = 021 }22 break;23 case 2:24 if(name == 'V'){25 keyPart++;26 }else{27 keyPart = 028 }29 break;30 case 3:31 if(name == 'E'){32 keyPart++;33 }else{34 keyPart = 035 }36 break;37 case 4:38 if(name == 'L'){39 keyPart++;40 }else{41 keyPart = 042 }43 break;44 case 5:45 if(name == 'O'){46 keyPart++;47 }else{48 keyPart = 049 }50 break;51 case 6:52 if(name == 'P'){53 keyPart++;54 }else{55 keyPart = 056 }57 break;58 case 7:59 if(name == 'E'){60 keyPart++;61 }else{62 keyPart = 063 }64 break;65 case 8:66 if(name == 'R'){67 eg();68 }else{69 keyPart = 070 }71 break;72 }73}, false);74function eg(){75 window.location.href = "https://harlansr.github.io/";...
Using AI Code Generation
1var fs = require('fs');2var BestMatch = require('./bestMatch.js');3var bm = new BestMatch();4var data = fs.readFileSync('test4.txt').toString();5var words = data.split('\n');6var word = words[0];7var key = words[1];8var keyParts = bm.keyParts(key);9var bestMatch = bm.bestMatch(word, keyParts);10console.log(bestMatch);
Using AI Code Generation
1var BestTimeToBuyAndSellStock = require('./lib/BestTimeToBuyAndSellStock');2var stockPrices = [7, 1, 5, 3, 6, 4];3var stockPrices2 = [7, 6, 4, 3, 1];4var bestTime = new BestTimeToBuyAndSellStock(stockPrices);5var bestTime2 = new BestTimeToBuyAndSellStock(stockPrices2);6console.log("The maximum profit for stock prices: " + stockPrices + " is: " + bestTime.keyPart());7console.log("The maximum profit for stock prices: " + stockPrices2 + " is: " + bestTime2.keyPart());
Using AI Code Generation
1const BestFit = require('./BestFit.js');2const bf = new BestFit();3const key = 'a1';4const keyPart = bf.keyPart(key, 'row');5console.log(keyPart);6const BestFit = require('./BestFit.js');7const bf = new BestFit();8const key = 'a1';9const keyPart = bf.keyPart(key, 'col');10console.log(keyPart);11const BestFit = require('./BestFit.js');12const bf = new BestFit();13const key = 'a1';14const keyPart = bf.keyPart(key, 'invalid');15console.log(keyPart);16const BestFit = require('./BestFit.js');17const bf = new BestFit();18const key = 'a1';19const keyPart = bf.keyPart(key);20console.log(keyPart);21const BestFit = require('./BestFit.js');22const bf = new BestFit();23const key = 'a1';24const keyPart = bf.keyPart(key, 'row');25console.log(keyPart);26const BestFit = require('./BestFit.js');27const bf = new BestFit();28const key = 'a1';29const keyPart = bf.keyPart(key, 'col');30console.log(keyPart);31const BestFit = require('./BestFit.js');32const bf = new BestFit();33const key = 'a1';34const keyPart = bf.keyPart(key, 'invalid');35console.log(keyPart);36const BestFit = require('./BestFit.js');37const bf = new BestFit();38const key = 'a1';39const keyPart = bf.keyPart(key);40console.log(keyPart);41const BestFit = require('./BestFit.js');42const bf = new BestFit();
Using AI Code Generation
1var BestTimeToBuyAndSellStock = require('./lib/BestTimeToBuyAndSellStock');2var stockPrices = [7, 1, 5, 3, 6, 4];3var stockPrices2 = [7, 6, 4, 3, 1];4var bestTime = new BestTimeToBuyAndSellStock(stockPrices);5var bestTime2 = new BestTimeToBuyAndSellStock(stockPrices2);6console.log("The maximum profit for stock prices: " + stockPrices + " is: " + bestTime.keyPart());7console.log("The maximum profit for stock prices: " + stockPrices2 + " is: " + bestTime2.keyPart());
Using AI Code Generation
1const BestFit = require('./BestFit.js');2const bf = new BestFit();3const key = 'a1';4const keyPart = bf.keyPart(key, 'row');5console.log(keyPart);6const BestFit = require('./BestFit.js');7const bf = new BestFit();8const key = 'a1';9const keyPart = bf.keyPart(key, 'col');10console.log(keyPart);11const BestFit = require('./BestFit.js');12const bf = new BestFit();13const key = 'a1';14const keyPart = bf.keyPart(key, 'invalid');15console.log(keyPart);16const BestFit = require('./BestFit.js');17const bf = new BestFit();18const key = 'a1';19const keyPart = bf.keyPart(key);20console.log(keyPart);
Using AI Code Generation
1var BestRoute = require('./BestRoute');2var bestRoute = new BestRoute();3var startPoint = {x: 0, y: 0};4var endPoint = {x: 4, y: 4};5var keyPart = bestRoute.keyPart(startPoint, endPoint);6console.log('start point: ' + startPoint.x + ', ' + startPoint.y);7console.log('end point: ' + endPoint.x + ', ' + endPoint.y);8console.log('key part: ' + JSON.stringify(keyPart));9const BestFit = require('./BestFit.js');10const bf = new BestFit();11const key = 'a1';12const keyPart = bf.keyPart(key, 'row');13console.log(keyPart);14const BestFit = require('./BestFit.js');15const bf = new BestFit();16const key = 'a1';17const keyPart = bf.keyPart(key, 'col');18console.log(keyPart);19const BestFit = require('./BestFit.js');20const bf = new BestFit();21const key = 'a1';22const keyPart = bf.keyPart(key, 'invalid');23console.log(keyPart);24const BestFit = require('./BestFit.js');25const bf = new BestFit();26const key = 'a1';27const keyPart = bf.keyPart(key);28console.log(keyPart);29const BestFit = require('./BestFit.js');30const bf = new BestFit();
Using AI Code Generation
1var BestKeyFinder = require('./BestKeyFinder.js');2var keyfinder = new BestKeyFinder();3var bestKey = keyfinder.keyPart('C', 'major', 'A', 'minor', 3);4console.log(bestKey);5var KeyFinder = require('./KeyFinder.js');6var BestKeyFinder = function() {7 var keyfinder = new KeyFinder();8 this.keyPart = function(key1, mode1, key2, mode2, part) {9 var key = keyfinder.key(key1, mode1, key2, mode2, part);10 var mode = keyfinder.mode(key1, mode1, key2, mode2, part);11 return key + ' ' + mode;12 };13};14module.exports = BestKeyFinder;15The BestKeyFinder class imports the KeyFinder class. The BestKeyFinder class creates an instance of the KeyFinder class and uses the key method of the KeyFinder class to find the key of the piece of music. The BestKeyFinder class uses the mode method of the KeyFinder class to
Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!