function getPaths(obj, path = [ '' ]) {
const entries = Object.entries(obj);
return entries.length
? entries.reduce((acc, n) => (
path.push(n[0]),
acc.push(...getPaths(n[1], path)),
path.pop(),
acc
), [])
: [ path.join('/') ];
}
const paths = getPaths(pages);const getPaths = function*(root) {
for (const stack = this(root, [ '' ]); stack.length;) {
const [ obj, path ] = stack.pop();
const next = this(obj, path);
stack.push(...next);
if (!next.length) {
yield path.join('/');
}
}
}.bind((obj, path) => Object.keys(obj).reverse().map(n => [ obj[n], [ ...path, n ] ]));
const paths = [...getPaths(pages)];
provide() {
return {
treeRoot: this,
};
},inject: [ 'treeRoot' ],@click="treeRoot.$emit('item-click', item)"methods: {
onItemClick(item) {
// ...
},
},@item-click="onItemClick"
str
.delete(' ')
.split('')
.reduce(Hash.new(0)){|acc, n| acc[n] += 1; acc}
.each{|k, v| puts "#{k}: #{v}"}
<div ref="map"></div>data: () => ({
coords: [ ... ],
}),
methods: {
initMap() {
this.map = new ymaps.Map(this.$refs.map, {
center: this.coords,
zoom: 8,
});
this.marker = new ymaps.Placemark(this.coords, {
hintContent: 'hello, world!!',
});
this.map.geoObjects.add(this.marker);
this.map.events.add('click', this.onMapClick);
this.$watch('coords', this.updateMap);
},
onMapClick(e) {
this.coords = e.get('coords');
},
updateMap() {
this.map.panTo(this.coords);
this.marker.geometry.setCoordinates(this.coords);
},
},
created() {
ymaps.ready(this.initMap);
},
function shortNumber(val) {
const abs = Math.abs(val);
const prefixIndex = Math.log10(abs) / 3 | 0;
return (
(val < 0 ? '-' : '') +
Math.round(abs / (10 ** (prefixIndex * 3))) +
'KMGTPEZY'.charAt(~-prefixIndex)
);
}shortNumber(99) // '99'
shortNumber(1945) // '2K'
shortNumber(-5839465) // '-6M'
shortNumber(7e10) // '70G'
const [ sort, setSort ] = useState(false);
const sorted = useMemo(() => {
return [...data].sort((a, b) => {
return a.name.localeCompare(b.name) * (sort ? -1 : 1);
});
}, [ sort ]);<button onClick={() => setSort(sort => !sort)}>Сортировать</button>
const replaceKeys = (val, replacer) =>
val instanceof Array
? val.map(n => replaceKeys(n, replacer))
: val instanceof Object
? Object.fromEntries(Object
.entries(val)
.map(n => [ replacer(n[0]), replaceKeys(n[1], replacer) ])
)
: val;
const newObj = replaceKeys(obj, k => k.toUpperCase());
const elements = document.querySelectorAll('.descr');const addText = (el, index) =>
el.append(arr[index]);
// или
// el.replaceChildren(arr[index]);
// el.textContent = arr[index];
// el.innerText = arr[index];
// el.innerHTML = arr[index];
// el.appendChild(document.createTextNode(arr[index]));
// el.insertBefore(new Text(arr[index]), null);
// el.insertAdjacentText('beforeend', arr[index]);
// el.insertAdjacentHTML('beforeend', arr[index]);elements.forEach(addText);
// или
for (const [ i, n ] of elements.entries()) {
addText(n, i);
}
// или
for (let i = 0; i < elements.length; i++) {
addText(elements[i], i);
}
// или
(function next(i, n = elements.item(i)) {
n && (addText(n, i), next(-~i));
})(0);
`${str | 0}`
// или
str.replace(/^0+/, '')
// или
str.match(/[^0].*/)[0]
// или
str.split(/^0*/).pop()
// или
str.slice(str.search(/[^0]/))
// или
[...str].reduce((acc, n) => (+n || acc) && acc + n, '')
$('#search-faq-input-filter').on('input', e => {
const val = $(e.target).val().toLowerCase();
$('.ia-item')
.hide()
.filter((i, n) => (
$('.ia-content', n).text().toLowerCase().includes(val) ||
$('.ia-title-link', n).text().toLowerCase().includes(val)
))
.show();
});
[...new Set(data.variations.map(n => n.color.name))][...new Map(data.variations.map(n => [
n.color.name,
n.color,
])).values()]
// или
Object.values(data.variations.reduce((acc, { color: n }) => (
acc[n.name] ??= n,
acc
), {}))
// или
data.variations.map(n => n.color).filter(function(n) {
return !(this[n.name] = this.hasOwnProperty(n.name));
}, {})function unique(data, key = n => n) {
const getKey = key instanceof Function ? key : n => n[key];
const keys = new Set;
const result = [];
for (const n of data) {
const k = getKey(n);
!keys.has(k) && keys.add(k) && result.push(n);
}
return result;
}// получаем массив уникальных имён цветов
const uniqueStrColors = unique(data.variations.map(n => n.color.name));
// получаем массив объектов цветов, свойства name которых уникальны
const uniqueObjColors = unique(data.variations.map(n => n.color), n => n.name);
const elements = document.querySelectorAll('.slider__itm img');
const tag = 'a';elements.forEach(n => {
n.after(document.createElement(tag));
n.nextSibling.append(n);
});for (const n of elements) {
const wrapper = document.createElement(tag);
wrapper.appendChild(n.parentNode.replaceChild(wrapper, n));
}for (let i = 0; i < elements.length; i++) {
const wrapper = document.createElement(tag);
elements[i].replaceWith(wrapper);
wrapper.insertAdjacentElement('afterbegin', elements[i]);
}(function next(i, n = elements.item(i)) {
n && (n.outerHTML = `<${tag}>${n.outerHTML}</${tag}>`, next(-~i));
})(0);
select.addEventListener('change', function() {
swiper.slideTo(this.selectedIndex);
});
const filteredPeople = people.filter(n => n.name.includes(searchFilter));<ul className="list-group">
{filteredPeople.map(n => (
...