<canvas width="450" height="450"></canvas>
let am = {'8357':'m','5172':'m','3115':'f','5743':'f'};
const mf = { m: [], f: [] };
for (item of Object.entries(am)) {
mf[item[1]].push(item[0]);
}
if (mf.m.length !== mf.f.length) throw "Гендерный дисбаланс!";
const result = mf.m.reduce((acc, c, i) => (acc.push(c, mf.f[i]), acc), []);
// [ "5172", "3115", "8357", "5743" ]
highlight
— функция для подсветки. И есть пример, подсветка лейблов полей с ошибками:$("#myform").validate({
highlight: function(element, errorClass, validClass) {
$(element).addClass(errorClass).removeClass(validClass);
$(element.form).find("label[for=" + element.id + "]")
.addClass(errorClass);
},
unhighlight: function(element, errorClass, validClass) {
$(element).removeClass(errorClass).addClass(validClass);
$(element.form).find("label[for=" + element.id + "]")
.removeClass(errorClass);
}
});
$sql = <<<EOFSQL
SELECT IF (b.price IS NOT NULL, a.price - b.price, '') AS result
FROM ${DB_PREFIX}product AS a
LEFT JOIN
${DB_PREFIX}product_special AS b
ON a.product_id = b.product_id
WHERE a.product_id = ?
EOFSQL;
$stmt = $this->pdo->prepare($sql);
$stmt->execute([$row]);
$result = $stmt->fetchColumn();
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 под платформу.