R
. Центр попадет в центр. Северный полюс – в верхнюю точку, южный – в нижнюю.y = R * sin(lat)
R * cos(lat)
. А ещё уменьшиться оно может в зависимости от долготы: надо домножить на cos(lng)
. Итого получается x = R * cos(lat) * cos(lng)
num
назначается значение пустого на тот момент input'а.btn
вешается слушатель события. Он не выполняется сразу, а сидит и ждёт события. При каждом возникновении события, выполняется внутренний код функции getSquareNum()
alert()
– выполняется позже, при нажатии кнопки. Выводит определённое в самом начале значение num
в квадрате. Или же берет свежее, «на сейчас», значение из input'а во втором варианте кода с «если вместо num подставить document.get...». при вызове команды все обнуляется, но все же
id
самого свежего проверенного поста на каждой из стен. Чтобы потом проверять до него, при необходимости проверив глубже, чем на 100 постов.f( "a.goal", x)
x
, а x.a
:var x = {
a: {
goal: 1,
b: 2,
},
c: 3
};
function f(value, chain) {
if(chain.length === 0) return value;
const propsArray = chain.split('.'); // "a.goal" => ["a", "goal"]
const property = propsArray[0];
if(!value.hasOwnProperty(property)) return; // несуществующее свойство
return f(value[property], propsArray.slice(1).join('.')); // вызыв функцией самой себя
// но цепочка свойств короче на 1 элемент – самый левый отрезали
}
console.log( "Result:", f(x, 'a.goal')); // 1
from.id
– по нему идентифицируется диалог и берется его состояние.hash('sha256', file_get_contents($filepath))
const today = new Date(); // сегодня, сейчас. 22 сентября
const tomorrow = new Date();
tomorrow.setDate( tomorrow.getDate() + 1); // +1 день, 23 сентября, это же время.
const plus13days = new Date();
plus13days.setDate( plus13days.getDate() + 13); // +13 дней, 5 октября
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) + ' дней назад';
} // ... и так далее