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)
arr.reduce((acc, n, i) => (
(i && (acc[acc.length - 1].length + !(acc.length & 1) !== 3)) || acc.push([]),
acc[acc.length - 1].push(n),
acc
), [])
saveLocalMoodsData(moodboard) {
const {hoc_methods} = this.props;
return new Promise((resolve, reject) => {
this.showAuthPopup({
callback: () => {
hoc_methods.saveLocalMoods(moodboard.id).then(payload => {
hoc_methods.closeModal();
const mood = safeGet(payload, 'payload', {});
const data = {...mood, count: mood.blocks.length};
// reject при ошибке, если она возможна
resolve(data);
})
}
})
});
}
addCardToMoodboard(moodboard, cardData) {
if (moodboard.localMode) {
return saveLocalMoodsData(moodboard)
.then(data => this.addCardToMood(data, cardData));
} else {
return this.addCardToMood(moodboard, cardData);
}
}
arr.map(n => ({
id: n.id.value,
title: n.title.value,
slug: n.slug.value
}))
arr.map(n => Object.entries(n).reduce((acc, [ k, v ]) => (acc[k] = v.value, acc), {}))
arr.map(n => Object.keys(n).reduce((acc, k) => ({ ...acc, [k]: n[k].value }), {}))
arr.map(n => Object.assign({}, ...Object.values(n).map(m => ({ [m.title.toLowerCase()]: m.value }))))
var a = [];
var b = [];
a === b //false
JSON.stringify(a) === JSON.stringify(b) //true
var a = [];
var b = a;
a === b //true
var objFromOptions = Object.assign({}, options.obj);
JSON.parse(JSON.stringify(options.obj))
import React from 'react';
import classnames from 'classnames';
class SomeComponent extends React.PureComponent {
constructor(props) {
super(props);
this.onClick = this.onClick.bind(this);
this.state = {
show: false,
};
}
onClick() {
this.setState({ show: !this.state.show });
}
render() {
const { show } = this.state;
return <div onClick={this.onClick} className={classnames('some-class', { 'change-class': show })} />;
}
}
export default SomeComponent;
// Объявление переменной, которая будет доступна для функции highlight
var selectedButton;
function highlight(node) {
// Если существует активная кнопка
if (selectedButton){
// то снять с неё класс highlight
selectedButton.classList.remove('highlight');
}
// Теперь выбранной кнопкой считается переданный элемент
selectedButton = node;
// Поэтому вешаем на него класс highlight
selectedButton.classList.add('highlight');
}