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);
}
});
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