const type = document.querySelector('#type');
const price = document.querySelector('#price');
const minPrices = {
bungalo: 0,
flat: 1000,
house: 5000,
palace: 10000,
};
type.addEventListener('change', function() {
const minPrice = minPrices[this.value];
price.min = minPrice;
price.value = Math.max(minPrice, price.value);
});
type.dispatchEvent(new Event('change'));
$('body').on('click', '.help'$('body').on('mousedown', '.help'
function maxZeroSequence(arr) {
let iMin = 0;
let iMax = 0;
for (let i = 0; i < arr.length; i++) {
let sum = 0;
for (let j = i; j < arr.length; j++) {
if ((sum += arr[j]) === 0 && (iMax - iMin) <= (j - i + 1)) {
iMin = i;
iMax = j + 1;
}
}
}
return arr.slice(iMin, iMax);
}function maxZeroSequence(arr) {
const sumIndices = Object.values(arr.reduce((acc, n, i) => {
const sum = acc[0] += n;
(acc[1][sum] = acc[1][sum] || [ i + 1 ])[1] = i + 1;
return acc;
}, [ 0, { 0: [ 0 ] } ])[1]);
return arr.slice(...sumIndices.reduce((max, n) => {
const diff1 = n[1] - n[0];
const diff2 = max[1] - max[0];
return diff1 > diff2 || (diff1 === diff2 && n[0] > max[0]) ? n : max;
}, [ 0, 0 ]));
}
const cities = [ 'Москва', 'Санкт-Петербург', 'Севастополь' ];
if (cities.includes(geolocation.city)) {
...
Name должна падать в массив labels
watch: {
choosenMetabolit(val) {
this.anMetProfData.labels.push(val.name);
},
},а result_1, 2 и 3 имели путь datasets[0, 1 или 2]. data
watch: {
choosenMetabolit(val) {
const data = this.anMetProfData;
const sets = data.datasets;
data.labels.push(val.name);
sets[0].data.push(val.result_1);
sets[1].data.push(val.result_2);
sets[2].data.push(val.result_3);
},
},
NavLink в Nav (кстати, а что там после этого останется? - да ничего, кроме рендеринга a, которому прокидываются props без изменений; получается, что не так уж и нужен этот компонент, проще создавать этот a сразу в Nav), и хранить в нём индекс активного элемента:state = {
active: null,
...
}setActive(active) {
this.setState({ active });
}{this.state.items.map((n, i) => (
<li>
<NavLink
href="#"
className={this.state.active === i ? 'active' : ''}
onClick={() => this.setActive(i)}
>
{n}
</NavLink>
</li>
))}
<div class="slider-wrapper">
<button data-step="-1">-</button>
<div class="slider"></div>
<button data-step="+1">+</button>
</div>$('.slider').slider({ /* настройки слайдера */ });
$('.slider-wrapper [data-step]').button().click(function() {
const $slider = $(this).closest('.slider-wrapper').find('.ui-slider');
const step = +this.dataset.step;
const { min, max, value } = $slider.slider('option');
$slider.slider('option', 'value', Math.max(min, Math.min(max, +value + step)));
});
el: '.slidernav'el: this.querySelector('.slidernav')
SELECT key, array_agg(val)
FROM (
SELECT key::integer, jsonb_array_elements_text(value)::boolean AS val
FROM jsonb_each('{"659": [false, false, false], "596": [true, true, true]}'::jsonb)
) AS t
GROUP BY key
const add = (str, num, saveLength) =>
`${+str + num}`.padStart(str.length, 0).slice(-str.length * !!saveLength);function add(str, num, saveLength) {
const result = [];
let overflow = 0;
let i = str.length - 1;
while (saveLength ? i >= 0 : (overflow || num || i >= 0)) {
const d = (str[i] | 0) + (num % 10) + overflow;
result.push(d % 10);
overflow = +(d > 9);
num = num / 10 | 0;
i--;
}
return result.reverse().join('');
}add('0001', 1) // '0002'
add('000099', 901) // '001000'
add('05', 99) // '104'
add('05', 99, true) // '04'