export default createStore(combineReducers(reducer), initialState, window.__REDUX_DEVTOOLS_EXTENSION__ && window.__REDUX_DEVTOOLS_EXTENSION__())
export default createStore(combineReducers(reducer), window.__REDUX_DEVTOOLS_EXTENSION__ && window.__REDUX_DEVTOOLS_EXTENSION__())
.elem div:first-of-type{
//стили
}
document.getElementById("st1").style.borderRadius = '5px';
multiItemSlider
, передав в неё нужные параметры:isCycling
- судя по всему отвечает за автоматическое переключение слайдовslider.stop()
то слайдер остановитсяconst array1 = [
{ "user_id": 1, "page_views": 7, "clicks": 5 },
{ "user_id": 5, "page_views": 6, "clicks": 3 },
{ "user_id": 9, "page_views": 4, "clicks": 7 },
{ "user_id": 1, "page_views": 3, "clicks": 5 },
];
const array2 = [
{"id":9,"first_name":"Barnabas"},
{"id":1,"first_name":"Emlyn"},
{"id":5,"first_name":"Ervin"},
];
const result = array2.map(item2 => {
// отфильтровали массив 1 на наличие элементов с соответствующим id
const withCurrentId = array1.filter(item1 => item1['user_id'] === item2['id']);
// склеили новый объект с суммами свойств
const item1 = withCurrentId.reduce((acc, curr) => {
// если в аккумуляторе нет свойства page_views, то 0, потом суммируем
acc['page_views'] = (acc['page_views'] || 0) + curr['page_views'];
// если в аккумуляторе нет свойства clicks, то 0, потом суммируем
acc['clicks'] = (acc['clicks'] || 0) + curr['clicks'];
return acc;
}, {});
return { ...item2, ...item1 };
});
console.log(result);
if (!_isElementVisible(_mainElement)) {
return;
}
element.contains(elemFromPoint(rect.left, rect.top))
|| element.contains(elemFromPoint(rect.right, rect.top))
|| element.contains(elemFromPoint(rect.right, rect.bottom))
|| element.contains(elemFromPoint(rect.left, rect.bottom))
|| element.contains(elemFromPoint(rect.right, rect.bottom - 1))
|| element.contains(elemFromPoint(rect.left, rect.bottom - 1))
infinite
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
// рандомайзер даты
function randomDate(start, end) {
return new Date(start.getTime() + Math.random() * (end.getTime() - start.getTime()));
}
var pn = ['Alex', 'Mark', 'Victor', 'Maxim', 'Robert'],
pnf = pn[Math.floor(Math.random() * pn.length)]; // я не знаю, что это такое
var chislo = prompt('Введите ко-во массивов');
var massive = [];
for (let i = 0; i < chislo; i++) {
massive.push({
// не знаю, что такое d2, d1 и, в общем случае, исхожу из того, что я могу получить корректную дату,
// date: (new Date(Math.floor(Math.random() * (d2 - d1) + d1))).toDateString(),
date: randomDate(new Date(1960, 0, 1), new Date(2000, 0, 1)).toDateString(),
summ: Math.floor(Math.random() * (500 - 0 + 1)) + 0,
name: pn[Math.floor(Math.random() * pn.length)]
});
}
console.table(massive);
const initialValues = {
summ: 0, // самая высокая зп
summOfYears: 0, // сумма годов рождения
};
const {name, summOfYears} = massive.reduce((acc, curr) => {
const {summ, name} = acc.summ > curr.summ ? acc : curr;
return {
summ,
name,
summOfYears: acc.summOfYears + new Date(curr.date).getFullYear(),
};
}, initialValues);
const averageAge = summOfYears && Math.round(new Date().getFullYear() - summOfYears / massive.length);
if (name && averageAge) {
console.log(`Самый высокооплачиваемый ${name}`);
console.log(`В среднем ребятам ${averageAge}`);
}
// пока писал, подумал, что я немного издеваюсь, и это будет заметно в общем... вот более адекватное решение для вас
/*
var summOfYears = 0, // сумма годов рождения
whoWithMaxSalary = {}; // человек с самой высокой зп
massive.forEach((person) => {
whoWithMaxSalary = whoWithMaxSalary.summ > person.summ ? whoWithMaxSalary : person;
summOfYears += new Date(person.date).getFullYear();
});
// если summOfYears равна не нулю, тосчитаем средний возраст
const averageAge = summOfYears && Math.round(new Date().getFullYear() - summOfYears / massive.length);
if (whoWithMaxSalary.name && averageAge) {
console.log('Самый высокооплачиваемый: ' + whoWithMaxSalary.name);
console.log('В среднем ребятам: ' + averageAge);
}
*/
</script>
</body>
</html>
const nestedObject = { a: { b: { c: 3 } }, c: 1, b: 1 };
const str = "a.b.c";
const prop = str
.split(".")
.reduce(
(acc, current) => (acc[current] !== undefined ? acc[current] : acc),
nestedObject
);
console.log(prop);