При этом точно такой же блок кода, но с другим свойством, отлично срабатывает и текст меняется. Отличие в том, что это другое свойство изначально есть в этом объекте campaign, а не устанавливается в created.
const arrayToObject = (array) => { array.reduce(...
return
или убрать фигурные скобки.{id: '1', content: 'Some stuff'},
obj[item._id] = item
как лучше решить задачу преобразования массива в такой объект?
const arrToObj = (arr, key, val = n => n) =>
arr.reduce((acc, n) => (acc[key(n)] = val(n), acc), {});
const obj1 = arrToObj(array, n => n.id);
const obj2 = arrToObj(array, n => n.id, n => n.content);
const $content = $('.video');
const $headers = $('.video-links a').on('click', function() {
const href = $(this).attr('href');
$headers.removeClass('active').filter(this).addClass('active');
$content.addClass('video-off').filter(href).removeClass('video-off');
});
const content = document.querySelectorAll('.video');
const headers = document.querySelectorAll('.video-links a');
headers.forEach(n => n.addEventListener('click', onClick));
function onClick({ target: t }) {
const href = t.getAttribute('href');
headers.forEach(n => n.classList.toggle('active', n === t));
content.forEach(n => n.classList.toggle('video-off', !n.matches(href)));
}
array_map(function($n) {
return [
'date' => $n[0],
'sum' => $n[1]
];
}, array_chunk($arr, 2))
<img src={data.url} key={data.url} width="100%" alt="" />
arr1.filter(n => arr2.includes(n)).length !== 0
// или
arr1.some(function(n) {
return this.has(n);
}, new Set(arr2))
// или
new Set([ ...arr1, ...arr2 ]).size < new Set(arr1).size + new Set(arr2).size
!!new Set(arr1).intersection(new Set(arr2)).size
При наведении происходят непонятные скачки
.box-inner
завязано на его же :hover
, так что когда он уезжает из-под курсора, состояние :hover
теряется, элемент откатывается назад, под курсор, снова случается :hover
, элемент опять едет вверх, ну и т.д. Надо смотреть :hover
у элемента, который из-под курсора никуда не девается, т.е., у родительского:.box:hover .box-inner {
margin-top: -360px;
}
Также, как сделать, чтобы при убирании курсора все возвращалось обратно плавно, а не резким скачком?
transition
должен присутствовать у элемента вне зависимости от наличия состояния :hover
:.box-inner {
transition: all 500ms ease;
}
this.getPictures()
должно быть что-то вродеthis.collections.splice(this.collection.findIndex(n => n.id === picId), 1)
<div id="city">
<img src="img/flag-m.png" />
<span>Москва</span>
</div>
const cityImage = document.querySelector('#city img');
const cityName = document.querySelector('#city span');
document.querySelector('ul').addEventListener('click', e => {
const li = e.target.closest('li');
if (li) {
cityImage.setAttribute('src', li.getAttribute('data-gerb'));
cityName.innerText = li.getAttribute('data-city');
}
});
// или
document.querySelectorAll('li').forEach(function(n) {
n.addEventListener('click', this);
}, ({ currentTarget: { dataset: { city, gerb } } }) => {
cityImage.src = gerb;
cityName.textContent = city;
});
color.bind(null, i)
надо сохранить - в какой-нибудь массив, например.forEachWithDelay(
document.querySelectorAll('.x'),
1000,
el => el.style.display = 'block'
);
function forEachWithDelay(arr, delay, callback) {
Array.prototype.forEach.call(arr, (n, i) => {
setTimeout(callback, (i + 1) * delay, n);
});
}
function forEachWithDelay(arr, delay, callback) {
(function next(i) {
if (i < arr.length) {
setTimeout(() => {
callback(arr[i]);
next(-~i);
}, delay);
}
})(0);
}
function forEachWithDelay(arr, delay, callback) {
let i = -1;
const intervalId = setInterval(() => {
if (++i < arr.length) {
callback(arr[i]);
} else {
clearInterval(intervalId);
}
}, delay);
}