Skip to content

Instantly share code, notes, and snippets.

@popuguytheparrot
Created October 15, 2018 13:23
Show Gist options
  • Save popuguytheparrot/83bff4b44c8b6e9e0c00bf2bd6c650bb to your computer and use it in GitHub Desktop.
Save popuguytheparrot/83bff4b44c8b6e9e0c00bf2bd6c650bb to your computer and use it in GitHub Desktop.
ys
// На входе массив
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