const toDelX = new Set;
const toDelY = new Set;
X.forEach((n, i) => {
if (X2.includes(n) && Y2.includes(Y[i])) {
toDelX.add(n);
toDelY.add(Y[i]);
}
});
X2.splice(0, X2.length, ...X2.filter(n => !toDelX.has(n)));
Y2.splice(0, Y2.length, ...Y2.filter(n => !toDelY.has(n)));
Но как снять эту прослушку потом в unbind?
bind(el, options) {
const handler = () => { ... };
window.addEventListener('scroll', handler);
el.scrollHandler = handler;
},
unbind(el) {
window.removeEventListener('scroll', el.scrollHandler);
},
const map = new Map();
window.addEventListener('scroll', function(e) {
[...map.entries()].forEach(([ el, { className, deleteClass } ]) => {
...
});
});
bind(el, options) {
map.set(el, {
className: options.value,
deleteClass: options.arg === 'delete',
});
},
unbind(el) {
map.delete(el);
},
let autoplayInterval = null;
function startAutoplay() {
if (!autoplayInterval) {
autoplayInterval = setInterval(plusSlide, 1000);
}
}
function stopAutoplay() {
clearInterval(autoplayInterval);
autoplayInterval = null;
}
$keys = array_keys($auto);
$header = implode("", array_map(function($n) {
return "<th>$n</th>";
}, $keys));
$rows = implode("", array_map(function($i) use($auto, $keys) {
return "<tr>".implode("", array_map(function($n) use($auto, $i) {
return "<td>".$auto[$n][$i]."</td>";
}, $keys))."</tr>";
}, range(0, count($auto[$keys[0]]) - 1)));
echo "<table>$header$rows</table>";
v-model="searchRegion"
v-model="country.searchRegion"
data: () => ({
width: 0,
}),
created() {
const onResize = () => this.width = window.innerWidth;
onResize();
window.addEventListener('resize', onResize);
this.$on('hook:beforeDestroy', () => window.removeEventListener('resize', onResize));
},
data: () => ({
isWidthOK: false,
}),
created() {
const mql = window.matchMedia('(max-width: 600px)');
const onChange = () => this.isWidthOK = mql.matches;
onChange();
mql.addEventListener('change', onChange);
this.$on('hook:beforeDestroy', () => mql.removeEventListener('change', onChange));
},
function getMonthAverage($data, $month) {
$monthData = array_filter(array_column($data, $month), function($n) {
return $n > 0;
});
$count = count($monthData);
return $count ? array_sum($monthData) / $count : 0;
}
$juneAverage = getMonthAverage($data, 'june');
$allAverage = array_reduce(array_keys($data[0]), function($acc, $n) use($data) {
$acc[$n] = getMonthAverage($data, $n);
return $acc;
}, []);
watch: {
'getSelectedEvent.mediaUrl'(val) {
const img = new Image();
img.onload = () => this.checkExistImages = img.height > 0;
img.onerror = () => this.checkExistImages = false;
img.src = val;
},
},
<div id="app">
<div v-if="!images.length">
<h2>Select an images</h2>
<input type="file" @change="onFileChange" multiple>
</div>
<div v-else>
<div v-for="(image, i) in images">
<img :src="image" />
<button @click="removeImage(i)">Remove image</button>
</div>
</div>
</div>
new Vue({
el: '#app',
data: {
images: [],
},
methods: {
onFileChange(e) {
this.createImages(e.target.files || e.dataTransfer.files);
},
createImages(files) {
[...files].forEach(file => {
const reader = new FileReader();
reader.onload = e => this.images.push(e.target.result);
reader.readAsDataURL(file);
});
},
removeImage(index) {
this.images.splice(index, 1);
},
},
});