async function getArticles(){
const response = await fetch('https://gorest.co.in/public/v1/posts');
const response = await response.json()
console.log(response); // вывод этого стоит приложить к вопросу
response.data.forEach((article) => console.log(article.title));
}
getArticles(); // выведет в консоль кучу title'ов
Date
можно устанавливать новое число (день месяца) вне границ разумного: меньше 1 и больше числа дней в месяце. Магия: объект правильно добавит/удалит месяцы и годы.const isWithinRange = (ts, days) => {
const qna = new Date(ts);
const d = new Date();
d.setDate( d.getDate() - days ); // 120 дней в прошлое
return d < qna;
}
isWithinRange(1619827200 * 1000, 120) // false 1-е мая в 120 дней назад не попадает
isWithinRange(1619827200 * 1000, 180) // true зато в 180 вполне
const notificationSound = new Audio("/assets/audio/notification.wav")
let messaging = firebase.messaging();
messaging.onMessage(function (payload) {
console.log("Message received. ", payload);
notificationSound.play();
});
array.reduce(
(acc, current, i) => {
acc[i % 2] += current; // к чётному/нечетному прибавить
return acc; // вернуть массив
},
[0, 0] // начальное значение
)
let a, b;
console.log(
( a = 2 + 2, b = ["QnA", "Habr", "com"].join("."), "Отметить решением" )
);
// "Отметить решением"
const that = this; // Window
let a = {
one: that, // всё тот же Window
two: 'test'
}
console.log(a.one) // Window
const one = () => this; // объявили в глобальном контексте
let a = {
one,
two: "two",
}
a.one() // Window
Где функцию объявили, «в то отделение и обращайтесь» ){
const div = document.createElement("div"); // создать обёрточный div
div.classList.add("QnA-habr-com"); // добавить ему какой-то класс
const els = document.querySelectorAll("#rec365427333, #rec365427599"); // выбрать элементы
const parent = els[0].parentNode; // определить родителя первого из них
parent.appendChild(div); // вложить обёрточный див в родителя
els.forEach((el) => div.appendChild(el)) // перенести в обёртку те два
}
Слабое место вашего вопроса в том, что эти ID, вероятно, будут меняться в тильде, и решение перестанет работать. Лучше отбирать элементы как-то иначе. Например, сейчас те два блока, вроде бы, единственные 2 внутри div#allrecords
и можно их отбирать как const els = document.querySelectorAll("div#allrecords > div");
const items = {111: {id: 111}, 222: {id: 222}};
items // Object { 111: {…}, 222: {…} }
delete items[111] // true
items // Object { 222: {…} }
Object.defineProperty()
? Что покажет Object.getOwnPropertyDescriptor(items, 53522)
— там writable: true
? { сумма: счётчик }
, сколько раз каждая сумма встретилась на всём диапазоне 000..999
(для n = 6
, т.е. половина = 3)function getLuckyTicketsCount(n) {
const sums = {};
for (let i = 0; i < Math.pow(10, n >> 1); i++) {
// посчитать сумму цифр
let sum = 0, d = i;
while (d > 0) {
sum += d % 10; // прибавили младшую цифру
d = Math.floor(d / 10); // сдвинули число вправо на 1 цифру
}
// и в словарь прибавить 1 для этой суммы
sums[sum] = (sums[sum] || 0) + 1;
}
return Object.values(sums) // счетчики суммм
.map((n) => n * n) // квадраты
.reduce((acc, c) => acc + c); // сложить все
}
В чём отличие от присваиваниятолько в том, что сохранили значение, которое возвращает вызов. Для этой функции это значение некий уникальный id, по которому, при необходимости, можно отменить вызов черезa = requestAnimationFrame(anim)
и от обычного вызоваrequestAnimationFrame(anim)
?
cancelAnimationFrame()
, но в приведённом коде это значение никак не используется.Почему идёт каждый раз вызов функции anim()
Первый раз потому, что в конце кода стоит вызов requestAnimationFrame()
. Последующие — потому, что в конце очередной отработки anim() есть вызов a = requestAnimationFrame(anim);
при условии, что счётчик не превышен.