const isValidWalk = (directions) => {
if(directions.length !== 10) {
return false;
}
const path = directions
.reduce((acc, direction) => {
acc[direction] = (acc[direction] || 0) + 1
return { ...acc };
}, {});
return path['s'] === path['n'] && path['w'] === path['e'];
};
return find(current + 5, `(${history} + 5)`) ||
find(current * 3, `(${history} * 3)`);
null
так как 26 > 24. Предыдущий return, получив null
прыгнет в правую часть условия (где у тебя все умножается на 3), но и там будет тоже null
, так как 21 * 3 = 63 (что больше 24-х). Функция вернет тебя еще на уровень выше в правую ветку, так как из общей левой у тебя вернулся null
. Ты пойдешь так "наверх", пока не встретишь условие, где будет 6 * 3 = 18. У тебя в сумме будет 19. И после этого ты войдешь опять в правую ветку, где будет 19 + 5, что даст тебе желанное 24 и выход из функцииdocument.querySelector('input').removeAttribute("checked")
condition: {
exclude: [{disabled: true}, {rating: 24}]
}
}
const { condition, data } = users;
const commonCondition = condition
.exclude
.reduce((acc, condition) => ({...acc, ...condition }), {});
const filteredUsers = data.filter((user) => { // [{"user": "Dmitry", "rating": 22, "disabled": false}]
return Object
.entries(commonCondition)
.every(([key, value]) => value !== user[key])
});
/(https:\/\/[\w.]+)$/gmi
$
- он используется для поиска в конце строкиconst links = 'https://my.link.comhttps://my.newlink.com';
const [lastLink] = links.match(/(https:\/\/[\w.]+)$/gmi); // "https://my.newlink.com"
const positiveNums = arr.filter((num) => num > 0); // [16,54,72,47,4,25,46,4,27,4,76,12,4,47]
const oddPositiveNums = arr.filter((num) => num > 0 && num % 2 !== 0); // [47,25,27,47]
const sum = arr
.filter((num) => num > 0 && num % 2 !== 0)
.reduce((acc, num) => acc += num); // 146