desctructor()
в ECMAScript 6 не предусмотрено.class Menu {
static counter = 0;
constructor(name) {
this.name = name;
++Menu.counter;
}
}
menu1 = new Menu("меню1");
menu2 = new Menu("меню2");
menu3 = new Menu("меню3");
menu4 = new Menu("меню4");
delete menu1;
console.log(Menu.counter); // 4
window
. Тоже не лучший вариант, т.к. мало ли, где в коде содержатся ссылки на созданные объекты. Может, в анонимных функциях, вызванных по таймеру.let count = 0;
for (obj in this) { // в примере this === window
if (this[obj] instanceof Menu) ++count;
}
console.log(count); // 4
canvas
потребуется именно браузерный движок, поэтому Puppeteer или модуль node-canvas — все подтянут тяжёлый бинарник Chromium под платформу. const buckets = {voiceAssistants: 410, thermostats: 93, lighting: 1300};
const prices = {voiceAssistants: '9.99$', thermostats: '74.99$', lighting: '49.50$'};
const totals = Object.keys(prices).reduce((acc, c) => acc + buckets[c] * parseFloat(prices[c]), 0);
// всё равно не то что-то: 75419.97
div
from itertools import product
for s in product('ATGC', repeat=3):
print(s)
'''
('A', 'T', 'G')
('A', 'T', 'C')
('A', 'G', 'A')
('A', 'G', 'T')
('A', 'G', 'G')
...
'''
$search = 'test';
$contains = array_keys(array_filter($arr, function($item) use ($search) { return in_array($search, $item['users']); }));
print_r($contains); // ['test1']
$keys = array_keys($arr);
usort($keys, function($a, $b) use ($arr) {
return count($arr[$a]['users']) - count($arr[$b]['users']);
});
$shortest = $keys[0];
let a = [{v: 1}, {v: 2}, {v: 3}];
for (let obj of a) {
obj.v += 1;
}
a // [{"v":2},{"v":3},{"v":4}]
const el = document.querySelector('span.qodef-e-price-value.qodef-e--value');
el.removeChild(el.childNodes[0]);
scale
использовать похожий фильр scale2ref – он позволяет брать размеры одного входа, для масштабирования другого.ffmpeg -i "$file" -i "$wm" \
-filter_complex "[1][0:v]scale2ref=w='min(347, iw * 9/10)':h=ow/main_dar[logo][vid];
[vid][logo]overlay=x=(W-w) / 2:y=H - 2 * h[v]" \
-map [v]:v -map 0:a \
-y "$file-out.mp4"
ctx.translate(x, y)
и поворачивать на угол ctx.rotate(a)
.