undefined
:function f(arg1, arg2, arg3) {
if (arg3 === undefined) {
// 3-го нет
}
if (arg2 === undefined) {
// 2-го нет
}
}
arguments
:function sum() {
console.log(arguments.length);
let result = arguments[0];
if (arguments.length > 1) result += arguments[1];
if (arguments.length > 2) result += arguments[2];
return result;
}
sum(1,2,3) // выведет 3, вернёт 6
sum(1,2) // выведет 2, вернёт 3
sum(1) // выведет и вернёт 1
В стрелочных функциях arguments
отсутствует. x = x + k * (xTarget - x);
y = y + k * (yTarget - y);
В этом ответе подробнее: Какой алгоритм подойдет для описания полета насекомого?df = pd.DataFrame([
[11, 'a'],
[12, 'b'],
[13, 'c'],
[13, 'd'],
[13, 'e'],
[0, 'zero'],
[1e3, 'kilo'],
]);
ids = df[0]
df[ids.isin(ids[ids.duplicated()])].sort_values(0)
0 1
2 13.0 c
3 13.0 d
4 13.0 e
df.sort_values(0).head(3)
0 1
3 0.0 zero
0 11.0 a
1 12.0 b
.well-known
создаётся вручную или ботом CertBot для подтверждения того, что домен принадлежит вам — при автоматической генерации и обновления бесплатного SSL-сертификата от Lets Encrypt. Чтобы сайт работал по https://
const len1 = arr1.length;
const top2 = 2 * Math.floor((arr2.length - 2) / 2);
for (let id1 = 0, id2 = 0; id1 < len1; id1++, id2 = Math.min(top2, id2 + 2)) {
console.log(`name: ${arr1[id1]} val1: ${arr2[id2]} val2: ${arr2[id2 + 1]}`);
}
arr1
и arr2
, индексы по ним, соотв., хорошо назвать с теми же номерами: id1
и id2
function superCallback() {
console.log("Свершилось! Коллбэк сработал.");
}
document.addEventListener("keydown", superCallback);
// на этот момент мы объявили функцию и повесили слушатель события
// дальше всё, делать больше нечего, движок JS свободен
// но слушатель сидит, ждёт.
Наступает const repack = arr => {
const result = [...new Array(1 + Math.floor((arr.length - 1) / 2.5))].map(() => []);
arr.forEach((el, i) => result[Math.floor(i / 2.5)].push(el));
return result;
}
JSON.stringify(repack([1, 2, 3, 4, 5, 6, 7, 8, 9]))
// "[[1,2,3],[4,5],[6,7,8],[9]]"
[...new Array(length)].fill(value) // тут не годится, т.к. заполняем пустыми массивами
// и чтобы это не был один и тот же массив («передача по ссылке»)
// заполняем другим способом, через map()
[...new Array(length)].map(() => [])
3, 2, 3, 2, ...
через Math.floor(i / 2.5)
from itertools import combinations_with_replacement
list(combinations_with_replacement('123456', 2))
для грани_кубика_1 в диапазоне(число_граней):
для грани_кубика_2 в диапазоне(число_граней):
вывести комбинацию грань_кубика_1, грань_кубика_2