const result = [].concat(...arr);
function sorted(arr) {
const chars = 'абвгдеёжзийклмнопрстуфхцчшщъыьэюя';
const words = arr.filter(n => chars.includes(n[0]) && chars.includes(n.slice(-1)));
const grouped = words.reduce(
(acc, n) => (acc[chars.indexOf(n[0])].push(n), acc),
Array.from(chars, () => [])
);
const result = [];
for (
let prev = (grouped.find(n => n.length) || []).pop();
prev && result.push(prev) < words.length;
) {
for (
let i = chars.indexOf(prev.slice(-1)), j = i;
!(prev = grouped[i].pop() || grouped[j].pop());
i = -~i % grouped.length, j = ~-(j || grouped.length)
) ;
}
return result;
}
app.use(function(req, res, next) { req.session.number =req.session.number + 1 || 1; })
val = this.valueval = this.value.toUpperCase()if (arr[i].substr(0, val.length).toUpperCase() == val.toUpperCase()) {if (arr[i].toUpperCase().includes(val)) {b.innerHTML = "<strong>" + arr[i].substr(0, val.length) + "</strong>";
b.innerHTML += arr[i].substr(val.length);b.innerHTML = arr[i]
.split(RegExp(`(${val})`, 'i'))
.map((n, i) => i & 1 ? `<b>${n}</b>` : n)
.join('');
Сначала подумал что можно рандомизированный массив засунуть в set...
function createRandomArr(size, min, max) {
if (size > (max -= ~-min)) {
throw 'невозможно создать массив указанного размера';
}
const values = new Set;
for (; values.size < size; values.add(min + Math.random() * max | 0)) ;
return [...values];
}
const arr = createRandomArr(40, 1, 100);function createRandomArr(size, min, max) {
const len = max - min + 1;
const arr = [...Array(len).keys()];
return Array.from(
{ length: Math.min(size, len) },
() => min + arr.splice(Math.random() * arr.length | 0, 1)[0]
);
}function createRandomArr(size, min, max) {
const arr = Array.from(
{ length: max - min + 1 },
(_, i) => i + min
);
for (let i = arr.length; --i > 0;) {
const j = Math.floor(Math.random() * (i + 1));
[ arr[j], arr[i] ] = [ arr[i], arr[j] ];
}
return arr.slice(-size);
}
ChartJS Version: 2.4.0
Например я хочу, чтобы при наведении подсказка не вылазила, а появлялось окошко alert допустим.
что-то не получается с ними работать
const fs = map.controls.get('fullscreenControl');
fs.events.add('fullscreenenter', () => console.log('ON'));
fs.events.add('fullscreenexit', () => console.log('OFF'));
infinite-scroll-distance. Она задаёт расстояние от нижней границы прокручиваемого элемента, на котором должен сработать коллбек. Просто указываете сколько вам надо.
Может кто-нибудь подсказать почему так происходит и как исправить?
class AddItems extends React.Component {
state = {
value: '',
items: [],
}
inputChange = ({ target: { value } }) => {
this.setState({ value });
}
addNewItem = () => {
if (this.state.value) {
this.setState({
items: [ ...this.state.items, {
text: this.state.value,
id: (new Date()).getTime().toString(),
} ],
value: '',
});
}
}
render() {
return (
<div className="addItems">
<div className="addSection">
<input type="text" value={this.state.value} onChange={this.inputChange} />
<input type="submit" onClick={this.addNewItem} />
</div>
<div className="listSection">
<ul>{this.state.items.map((item) => <li key={item.id}>{item.text}</li>)}</ul>
</div>
</div>
)
}
}
const getClassStyles = className =>
[...document.styleSheets].reduce((styles, { cssRules }) => {
return [...cssRules]
.filter(n => n.selectorText === `.${className}`)
.reduce((styles, { cssText }) => {
return (cssText
.match(/[\w\-]+: [^;]+/g) || [])
.map(n => n.split(': '))
.reduce((styles, [ k, v ]) => (styles[k] = v, styles), styles);
}, styles);
}, {});
const styles = getClassStyles('class-name');
data: () => ({
items: [
{ value: 69, title: 'hello, world!!', checked: false },
{ value: 187, title: 'fuck the world', checked: false },
{ value: 666, title: 'fuck everything', checked: false },
],
}),
computed: {
sum() {
return this.items.reduce((acc, n) => acc + n.value * n.checked, 0);
},
checkAll: {
get() {
return this.items.every(n => n.checked);
},
set(val) {
this.items.forEach(n => n.checked = val);
},
},
},<div>
<label>
<input type="checkbox" v-model="checkAll">
CHECK ALL
</label>
</div>
<div v-for="n in items">
<label>
<input type="checkbox" v-model="n.checked">
{{ n.title }}
</label>
</div>
<div>SUM: {{ sum }}</div>
получилось вывести только элементы первого уровня, но не могу понять, как заставить выводиться дочерние элементы
const createTreeElement = data =>
Array.isArray(data) && data.length
? data.reduce((ul, n) => {
const li = document.createElement('li');
const div = document.createElement('div');
div.textContent = n.name;
li.append(div, createTreeElement(n.children));
ul.append(li);
return ul;
}, document.createElement('ul'))
: '';
document.body.append(createTreeElement(data));const createTreeHTML = data =>
data instanceof Array && data.length
? `<ul>${data.map(n => `
<li>
<div>${n.name}</div>
${createTreeHTML(n.children)}
</li>`).join('')}
</ul>`
: '';
document.body.insertAdjacentHTML('beforeend', createTreeHTML(data));