Ключ боюнча маалымат сактоо үчүн эмне жакшы: Map же жөнөкөй обьектпи? Mapтин артыкчылыктары эмне?
Frontend
/** * Сандык объект үчүн times ыкмасын ишке ашырыңыз. * Функция callback кабыл алышы керек жана аны чакырышы керек * белгиленген санга чейин, учурдагы итерциянын көрсөткүчү менен. */ Number.prototype.times = function (callback) { const n = Number(this); for (let i = 0; i < n; i++) { callback(i); } } // Мисалдар console.clear(); (3).times(console.log) // 0 // 1 // 2
Кампанияда ишиңизде эмне жакты жана эмне жакпайт?
/** * Жолдарды бөлгіч арқылы бириктирүүчү strjoin функциясын жазуу керек. */ function strjoin() { // код ушул жерде } console.log(strjoin('a', 'b', 'c')) // 'a.b.c' console.log(strjoin('a', 'b', 'c', 'd', 'e', 'f')) // 'a-b-c-d-e-f'
Дарахтада чӯчкилар ва қарғалар отират. Дарахттаги барча чӯчкиларни топуп, уларнинг исмларини қайтарувчи функция ёзиш керак. Кутилган натижа: ['Acorn', 'Sirsalty', 'Macadamia', 'Kernel'].
/* Үч бөлүмдөн турган код берилген. Ар бир console.logтун жыйынтыгын жазуу керек. */ var n = 1; function f(n) { n = 3; } f(n); console.log(n); // ?? // ---------------- var obj = { a: 1 }; function f1(o) { o.a = 5; } f1(obj); console.log(obj); // ?? // ---------------- var obj = { a: 1 }; function f2(o) { o = { hello: 1 }; } f2(obj);
camelCase → snake_case тапшырмасында, натыйжаны символдор массивтин ордуна саптардын бириктирилиши менен түзүүдө, асимптотикалык татаалдык жана эс тутумдун керектөөсү кандай өзгөрөт?
/* Ичке тартипте жайгашкан эки тизмеде күндөлүк убакта колдонуучулардын онлайн болуу интервалдары берилет. Интервалдын башталышы аякчысынан такыр кичине. Эки колдонуучу онлайн болгон интервалдарды эсептеп чыгуу керек. Интервалдар сааттарда көрсөтүлгөн жана 0дан 24кө чейин болушу мүмкүн. */ кесишүү( [[8, 12], [17, 22]], [[5, 11], [14, 18], [20, 23]] )// [[8, 11], [17, 18], [20, 22]] кесишүү( [[9, 15], [18, 21]], [[10, 14], [21, 22]] )// [[10, 14]] function кесишүү(колдонуучу1, колдонуучу2) { // кодду ушул жерге жазгыла }
Кам убакыттан бери компанияда иштеп жатасыз?
Rest-параметрлерди колдонбостон, алардын ордуна arguments объектисин колдонуп, strjoin функциясын кайра жазгыла.
Array.prototype.groupBy ыкмасын ишке ашырыңыз, ал жерде объекттер массивинин структураланган версиясы кайтарылат, анда ар бир ачкыч берилген функциянын чакырылышынын жыйынтыгы болуп саналат, ал эми мааниси ошол ачкычка туура келген элементтердин массиви.
Неге TypeScriptте for...of кызыл түстө белгиленсе, ал эми жөнөкөй for эмес?
// Массивдердин стандарттык ыкмаларын кеңейтүүчү groupBy ыкмасын ишке ашыруу керек. // Бул ыкма массивтин топтолгон версиясын кайтаруусу керек - объект, // анын ар бир ачкычы fn(arr[i]) функциясынын аткарылышынын жыйынтыгы, // жана ар бир мааниси ошол ачкыч менен байланышкан бардык элементтерди камтыган массив. // кодду бул жерге жазыңыз // Мисал 1 const array1 = [ { id: 1 }, { id: 1 }, { id: 2 } ]; const fn = (item) => item.id; console.log(array1.groupBy(fn)); // { // 1: [{ id: 1 }, { id : 1 }], // 2: [{ id: 2 }] // } // Мисал 2 const array2 = [1, 2, 3]; console.log(array2.groupBy(String)); // { // "1": [1], // "2": [2], // "3": [3] // } // Мисал 3 const array3 = [3.3, 0.5, 1.4]; console.log(array3.groupBy(Math.round)); // { // 3: [3.3], // 1: [0.5, 1.4] // }
Рекламалык тармактын прототипинде, жарнама орундарын сатуу төмөндөгүчө уюштурулган: сатып алуучулар алдын ала өз баасын белгилешет, жана ар бир жарнама орынына алар сатып алууга даярбы же жокпу деп жооп беришет. Функцияны ишке ашыруу керек, ал жарнама ордун сатуудан мурун, эң жогорку бааны сунуштаган сатып алуучулардын макулдугун күтүп, андан кийин макул болгон сатып алуучунун эң жогорку баасы менен жарнама ордун сатат. Функциянын жообу мүмкүн болушунча тезирээк болушу керек. Сатып алуучунун индексин кайтаруу керек. Мисалдар: Сатып алуучулар 1, 5, 10 бааларды сунушташат 10 сунуштаган сатып алуучу баш тартты 1 сунуштаган сатып алуучу макулдугун берди // Биз дагы күтүп жатабыз, себеби 5 бааны сунуштаган сатып алуучу жооп бериши мүмкүн 5 сунуштаган сатып алуучу макулдугун берди // Биз 5 сунуштаган сатып алуучуну тандайбыз ------------ Сатып алуучулар 1, 5, 10 бааларды сунушташат 10 сунуштаган сатып алуучу баш тартты 5 сунуштаган сатып алуучу макулдугун берди // 1 сунуштаган сатып алуучунун жооптуусун күтпөйбүз - ал анык эле тандалбайт ------------ Сатып алуучулар 1, 2 бааларды сунушташат 1 сунуштаган сатып алуучу баш тартты 2 сунуштаган сатып алуучу баш тартты // Эч ким тандалбайт type Buyer = { price: number, accepts: () => Promise<boolean>, } async function bestBuyer(buyers) { const sorted = buyers.map((buyer, index) => ({buyer, index})) .sort((a, b) => a.buyer.price - b.buyer.price); const promise = sorted.map(({buyer}) => buyer.accepts()); for (let i = 0; i < sorted.length; i++) { const accepted = await promise[i]; if (accepted) { return sorted[i].index; } } if (await buyers[0].accepts()) { return 0; } return -1; }
function any(promises) { // сиздин кодуңуз бул жерде }
Белгиленген миллисекунддардан кийин аяктай турган Promise кайтарган sleep функциясын жазыңыз.
Неге groupBy үчүн стрелка функциясын колдонууга болбойт? Стрелкада this эмне болот?
tries(n) функциясын жазыңыз, ал эми алгачкы ийгиликтүү натыйжаны кайтарат, эгер бардык аракеттер ката менен аяктагандан кийин — акыркы аракеттин ката-сыныгын ыргыта турган.
// Сизге латын тамгаларынан, бош орундардан жана тыныс белгілерінен турган сап берилген. // Сап ар бир 26 тамганы кеминде бир жолу камтыса, ал панограмм деп аталат. Сап панограммабы же жокпу аныктаңыз. const LETTERS = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J']; function isPangram(text) { // кодуңузду бул жерге жазгыла } console.log(isPangram(`A pangram or holoalphabetic sentence is a using every letter of a given alphabet at least once.`)); // => console.log(isPangram('Waltz, bad nymph, for quick jigs vex.'))
// ар бир мааниси — бул массив, ал ошол ачкыч менен оригинал массивдин бардык элементтерин камтыйт. // кодду бул жерге коюңуз // мисал 1 const array1 = [ { id: 1 }, { id: 1 }, { id: 2 } ]; const fn = (item) => item.id; console.log(array1.groupBy(fn)); // { // 1: [{ id: 1 }, { id: 1 }], // 2: [{ id: 2 }] // } // мисал 2 const array2 = [1, 2, 3]; console.log(array2.groupBy(String));