const filteredArray = array.filter( el => el.id.substring(0,3) === '051' )
\d
– одна цифра(\d)
– одна цифра, и мы её запомнили, чтобы потом вывести через $1, $2, ... $8\s
– один пробельный символ\s?
– один пробельный символ, но если его нет - тоже ок\-
– один символ дефиса (тоже надо экранировать)\-?
– один символ дефиса, если его нет, то и ладно.var re = /(\d)\s?(\d)\s?(\d)\s?(\d)\s?\-?\s?(\d)\s?(\d)\s?(\d)\s?(\d)/;
var tests = [
'1600 1800', // 16:00 - 18:00
'16001800', // 16:00 - 18:00
'abc def 16001800 geh', // abc def 16:00 - 18:00 geh
'zzzz16001800zzz' // zzzz16:00 - 18:00zzz
];
tests.map(e => e.replace(re, '$1$2:$3$4 - $5$6:$7$8'))
+7 495 5554321
сделает +74:95 - 55:54321
Math.round(20 / 3) === 7 // 7 занесли в массив результата
20 - 7 = 13
// далее повторяем с 13 и делим уже на 3 - 1 === 2
Math.round(13 / 2) === 7 // 7 идёт в результат
13 - 7 === 6
// далее повторяем с 6 и делить надо бы на 2 - 1 === 1
// т.е. осталось одно число в результат. Просто вписываем туда остаток 6
0.137456
?function split(n, divisor, q, result) {
q = q || 1;
result = result || [];
const m = q * Math.round(n / divisor / q);
result.push(m);
n -= m;
if( --divisor > 1) return split(n, divisor, q, result);
else {
result.push(n);
return result.sort((a,b) => a - b); // сортировка по возрастанию, на всякий случай
}
}
split(20, 3) // [6, 7, 7]
split(20, 3, 0.1) // [6.6000000000000005, 6.7, 6.7]
split(27.8, 4, 0.1) // [6.9, 6.9, 7, 7]
date
возвращается помимо поля #text
ещё поле uts
– unix timestamp. Удобнее использовать его. Вместо var date = value["date"]["#text"];
как-то так:var date = new Date(1000 * parseInt(value["date"]["uts"])); // дата-время из трека
var now = new Date(); // сейчас
// теперь сравнивайте две даты
var diff = Math.floor((now - date) / 1000); // прошло секунд
var when = '';
if( diff < 3600) {
when = '' + Math.floor(diff / 60) + ' минут назад';
} else if( diff < 86400) {
when = '' + Math.floor(diff / 3600) + ' часов назад';
} else if( diff < (7 * 86400)) {
when = '' + Math.floot(diff / 86400) + ' дней назад';
} // ... и так далее
const result = menuElements.map(item => {
const out = {};
out.key = item.key;
out.title = item.title;
if( item.type) out.type = item.type;
if( item.children) out.children = item.children;
return out;
});
result (2) […]
0: Object { key: "siteSettings", title: "Настройки сайта", children: (1) […] }
1: Object { key: "shopSettings", title: "Настройки магазина", children: (2) […]
}length: 2<prototype>: Array [] _display:76:5
element = document.createElement('input');
id
и name
:element.id = "kakoj-to-id";
element.name = "kakoe-to-imya";
document.body.appendChild(element);
while(i--) {
let el = d.createElement('input');
el.type = 'text';
el.placeholder = el.id = 'in-' + i;
el.name = 'v-' + i;
div.appendChild(el);
}
geocode
и geolocation
– должно быть полегче:<script src="https://api-maps.yandex.ru/2.1/?lang=ru_RU&load=geolocation,geocode"></script>
ymaps.geolocation.get()
.then(
result => {
const pos = result.geoObjects.position;
return ymaps.geocode(pos, {
kind: 'locality'
});
},
err => console.log('Ошибка 1: ' + err)
)
.then(
result => {
const city = result.geoObjects.get(0).properties.get('name');
document.getElementById('city').innerText = city;
},
err => console.log('Ошибка 2: ' + err)
)
.catch(err => console.log('Errrr', err));
for (size in burger) { // size будет 'smallburger' и 'bigburger'
for (prop in burger[size]) { // внутри каждого: 'name', 'cost' и 'ccal'
console.log(size, prop, burger[size][prop]);
}
}
B.x
обращается к статическому свойству класса, а new B().x
– к свойству инстанса. .attr('cy', d => (height + paddings.top - xScale(d[1])))
Должно быть .attr('cy', d => yScale(d[1]))
JSON.stringify()
При этом теряются исполняемые методы и ссылки на узлы DOM-дерева. Да и само DOM-дерево-то на новой странице будет уже другое. // при добавлении ноута в коллекцию
localStorage.setItem('laptops', JSON.stringify( laptopArray ));
// при рендере страницы после перехода
var laptopArray = JSON.parse(localStorage.getItem('laptops')) || [];