а vue выступает сугубо в роли небольших компонентов на разных страницах
import Vue from 'vue';
import Calculator from './calc/Calculator.vue';
<div class="calc"></div>
document.querySelectorAll('.calc').forEach(el => {
new Vue({
el : el,
render: h => h(Calculator, {
props: {
/// Пропсы, если надо
},
}),
});
});
<script>window.calcData = <?= json_encode($calcData) ?>;</script>
mounted() {
const d = window.calcData;
}
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
const categories = [
{ id: 1, name: 'name 1', parent: null },
{ id: 2, name: 'name 2', parent: 1 },
{ id: 3, name: 'name 3', parent: 6 },
{ id: 4, name: 'name 4', parent: 5 },
{ id: 5, name: 'name 5', parent: 6 },
{ id: 6, name: 'name 6', parent: null },
{ id: 7, name: 'name 7', parent: null }
]
function buildTree (array) {
// Складываем все элементы будущего дерева в мап под id-ключами
// Так легче делать поиск родительской ноды
const map = new Map(categories.map(item => [item.id, item]));
// Обход в цикле по значениям, хранящимся в мапе
for (let item of map.values()) {
// Проверка, является ли нода дочерней (при parent === null вернет undefined)
if (!map.has(item.parent)) {
continue;
}
// Сохраняем прямую ссылку на родительскую ноду, чтобы дважды не доставать из мапа
const parent = map.get(item.parent);
// Добавляем поточную ноду в список дочерних нод родительчкого узла.
// Здесь сокращено записана проверка на то, есть ли у ноды свойство children.
parent.children = [...parent.children || [], item];
}
// Возвращаем верхний уровень дерева. Все дочерние узлы уже есть в нужных родительских нодах
return [...map.values()].filter(item => !item.parent);
}
const tree = buildTree(categories);
console.log(tree);
(new Decimal\Decimal('153.17'))->mul(100)->toInt(); // 15317
(int)bcmul('153.17', '100'); // 15317
/[^\/]+(?=\/$)/.exec(str)[0]
str.match(/[^\/]+/g).pop()
str.split('/').at(-2)
elem.addEventListener('dragstart', function(evt) {
// прозрачная картинка вместо "призрака"
const img = new Image();
img.src = 'data:image/gif;base64,R0lGODlhAQABAIAAAAUEBAAAACwAAAAAAQABAAACAkQBADs=';
evt.dataTransfer.setDragImage(img, 0, 0);
});
Почему цикл if внутри цикла for который находится в цикле while не работает?
/^[\d\.\s]+/
^
- искать в начале строки[]
- список символов\d
- цифры\.
- точка\s
- пробельные символы+
- в количестве от одного