-
-
Save popuguytheparrot/83bff4b44c8b6e9e0c00bf2bd6c650bb to your computer and use it in GitHub Desktop.
ys
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// На входе массив | |
var arr = [ | |
{name: 'width', value: 10}, | |
{name: 'height', value: 20} | |
]; | |
// На выходе объект {width: 10, height: 20} | |
const obj = arr.reduce((acc, {name, value}) => acc[name] = value,{}) | |
------------------ | |
// Что будет в консоли? | |
var i = 10; | |
var array = []; | |
while (i--) { | |
array.push(function() { | |
return i + i; | |
}); | |
} | |
console.log([ | |
array[0](), | |
array[1](), | |
]) | |
// [10, 9] || [10,10] | |
// [-2, -2] | |
// i-- ; --i | |
------------------------ | |
var b = {}; | |
var c; | |
b.b = 1; | |
c = b; | |
c.b = 2; | |
console.log('1)', b.b); // 2 | |
console.log('2)', c.b); // 2 | |
var a = { counter: 1 }; | |
function inc(obj) { | |
obj.counter++; | |
obj.changed = true; | |
} | |
inc(a); | |
console.log('3)', a); // {count:2, changed: true} | |
var d = 'test'; | |
d.d = 1; | |
console.log('4)', d.d); // error | |
Object.is(obj1,obj2) | |
const strObj1 = JSON.stringify(obj1) | |
const strObj2 = JSON.stringify(obj2) | |
a.name === b.name | |
let a = {id: 1, value: 'text'}; | |
let b = {id: 2, value: 'text'}; | |
----------------------------------- | |
/** | |
* Есть функция и объект. Необходимо, чтобы функция в консоли вывела значение 'yandex'. | |
* Как добиться желаемого не изменяя тело функции? | |
*/ | |
function f() { console.log(this.x); } | |
var obj = {x: 'yandex'}; | |
f.bind(f,obj) | |
f.call | |
f.apply | |
-------------------------- | |
/** | |
* Дана строка, состоящая из букв A-Z: | |
* "AAAABBBCCXYZDDDDEEEFFFAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBB" | |
* Нужно написать функцию RLE, которая на выходе даст строку вида: | |
* "A4B3C2XYZD4E3F3A6B28" | |
* И сгенерирует любую ошибку, если на вход пришла невалидная строка. | |
* | |
* Пояснение: | |
* 1. если символ встречается 1 раз, он остается без изменений | |
* 2. если символ повторяется более 1 раза, к нему добавляется количество повторений | |
*/ | |
function rle(str) { | |
if(str.length === 0 || !str.match(/^[A-Z]+$/)) { | |
throw new Error(`${str} invalid`) | |
} | |
let curr = str[0] | |
let count = 0 | |
return str.split("").reduce((acc,item, index, arr) => { | |
if(curr === item) { | |
count++ | |
if(index === arr.length - 1) { | |
acc += curr + count | |
} | |
} else { | |
acc += curr + (count === 1 ? "" : count) | |
curr = item | |
count = 1 | |
} | |
} | |
return acc | |
, '') | |
} | |
---------------------------- | |
<div style="float: left; border: 1px solid red;"> | |
<span style="position: relative; top: -1000px; left: -1000px; border: 1px solid green;"> | |
Inner text | |
</span> | |
</div> | |
------------------------------ | |
<div id="root" style="background: red;"> | |
root | |
<span id="id1" style="background: lightblue;">id1</span> | |
<div id="id2" style="background: green;"> | |
id2 | |
<div id="id3" style="background: yellow;">id3</div> | |
</div> | |
</div> | |
let el = document.getElementById('root') | |
let arr = el.children() | |
function showID(e) { | |
e.stopPropagination() | |
return function(id) { | |
console.log('id', id) | |
} | |
} | |
arr.forEach(item => item.addEventListener('onclick', showID(item.id))) | |
e.currentTarget |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment