const objectParser = (data, path = '') =>
Object.assign(
{ [path || '<root>']: data },
...(data instanceof Object
? Object.entries(data).map(([ k, v ]) => objectParser(v, `${path}[${k}]`))
: []
)
);function objectParser(data) {
const result = {};
for (const stack = [ [ data, '' ] ]; stack.length;) {
const [ n, path ] = stack.pop();
result[path || '<root>'] = n;
(n instanceof Object) && Object
.entries(n)
.reverse()
.forEach(([ k, v ]) => stack.push([ v, `${path}[${k}]` ]));
}
return result;
}
const parentSelector = 'селектор родительского элемента';
const noClassSelector = 'селектор элементов, которым не надо добавлять класс';
const className = 'класс';$(parentSelector)
.children()
.removeClass(className)
.not(noClassSelector)
.addClass(className);
// или
for (const n of document.querySelector(parentSelector).children) {
n.classList.toggle(className, !n.matches(noClassSelector));
}
n < locals.length сделайте n < locals.length / 3.3 * n будет просто n, вместо 3 * n + 1 будет n + 1, и т.д.
<component :is="item.type" :data="item.data"></component>
const myPlacemark = new ymaps.Placemark([ 59.8755, 30.3955 ], {
hintContent: '<b>Адрес/метро:</b> Белы Куна 21-Н, 1й этаж/ м.Международная <br> <b>Площадь:</b> 45 м <br> <b>Стоимость:</b> 70 000 р. в мес. + К/У' ,
iconContent: 'Магазин (нежилой фонд)'
}, {
preset: 'islands#darkGreenStretchyIcon'
});
const formatTime = seconds => [
seconds / 3600 | 0,
seconds / 60 % 60 | 0,
seconds % 60,
].map(n => `${n}`.padStart(2, 0)).join(':');
const LENGTH = чему-то там равно, это вам виднее;
const input = document.querySelector('селектор инпута');
const button = document.querySelector('селектор кнопки');
input.addEventListener('input', e => {
button.style.display = e.target.value.length >= LENGTH ? '' : 'none';
});
input.dispatchEvent(new Event('input'));
я меняю другие данные
this.type === 'columns'
? this.items.slice(1).map(n => ({ ...n }))
: []
if (typeof defaultBg1 == 'Background') // ???null и undefined свойств не бывает, попытка обратиться к конструктору в их случае приведёт к TypeError; кроме того, instanceof проверяет всю цепочку прототипов, т.е., например, [ 1, 2, 3 ] одновременно и instanceof Array, и instanceof Object):if (defaultBg1 instanceof Background)
// или
if (defaultBg1.constructor === Background)
// или
if (defaultBg1.constructor.name === 'Background')const type = x => x == null ? `${x}` : x.constructor.name;
type() // 'undefined'
type(null) // 'null'
type(true) // 'Boolean'
type(69) // 'Number'
type('hello, world!!') // 'String'
type(/./) // 'RegExp'
type([ 187 ]) // 'Array'
type({ z: 666 }) // 'Object'
type(document) // 'HTMLDocument'
type(document.querySelectorAll('div')) // 'NodeList'
type(new class XXX {}) // 'XXX'
type(type) // 'Function'
chartObj: Chart;this.chartObj = new Chart(reportCtx, ...this.chartObj.data.datasetsthis.chartObj.update();
нужно при клике на беседу отображать все сообщения и нужную информацию
Можно ли как-то заставить Vue заменять весь контент?
Немного недопонял, можешь продемонстрировать как это задать?
data: () => ({
devices: [],
}),this.devices = Object.entries(res.data).map(([ id, n ]) => ({ ...n, id }));<ul>
<li v-for="d in devices" :key="d.id">
...
function getRootItem($id, $array) {
foreach ($array as $item) {
if ($item['id'] === $id) {
$parent = $item['parent'];
return $parent === 0 ? $item : getRootItem($parent, $array);
}
}
return null;
}