Firstname
Извините, если я детский вопрос задаю, но щас башка реально не варит. Да и дедлайн завтра.
У меня есть 2 массива следуюшего вида
let users = [
{
name: 'aaa',
id: 1
},
{//подобен предыдущему}
//здесь 1000 объектов
];
let changed = [//пустой массив];
Мне нужно по id человека добавить его объект во второй массив. У меня есть для этого два способа
//Первый способ
for (let user of users) {
if (user.id === 1) {
changed.push(user)
}
}
//Второй способ
let u = users.filter(user => user.id === 1);
changed.push(u[0]);
Какой из этих способов быстрее? И знаете ли вы более лаконичный способ?
Ildar
Привет! Эксперт по перформансу найдись
Сейчас Mount time 18ms, мне нужно выжать максимум. Что выпилить, что бы стало гарантированно быстрее? Испльзуем jss, material-ui
https://take.ms/NFOEl
const styles = theme => ({
button: {
textTransform: 'none',
minWidth: 0,
minHeight: 0,
paddingTop: 0,
paddingLeft: (theme.spacing.unit / 2) + (theme.spacing.unit / 4),
paddingRight: (theme.spacing.unit / 2) + (theme.spacing.unit / 4),
paddingBottom: 0,
fontWeight: 500,
color: gray[500],
height: 24,
fontSize: 12,
pointerEvents: 'auto !important'
},
icon: {
color: grey[500],
fontSize: '15px'
},
text: {
maxWidth: 100,
whiteSpace: 'nowrap',
overflow: 'hidden',
textOverflow: 'ellipsis',
fontSize: '0.75rem',
fontFamily: '"Roboto", "Helvetica", "Arial", sans-serif',
fontWeight: 400,
lineHeight: 1.66,
letterSpacing: '0.03333em'
}
});
// eslint-disable-next-line
class Size extends Component {
static propTypes = {
isCompact: PropTypes.bool,
isDisabled: PropTypes.bool,
cardId: PropTypes.number.isRequired,
classes: PropTypes.object.isRequired,
text: PropTypes.string.isRequired,
isPopoverOpen: PropTypes.bool.isRequired,
onPopoverClose: PropTypes.func.isRequired,
onPopoverOpen: PropTypes.func.isRequired,
anchorEl: PropTypes.any,
className: PropTypes.string,
iconClassName: PropTypes.string
};
static defaultProps = {
anchorEl: null,
isDisabled: false,
isCompact: false,
className: '',
iconClassName: '',
classes: {}
};
handleSave = (sizeText) => {
const { cardId, onPopoverClose } = this.props;
onPopoverClose();
store.dispatch(saveCard(cardId, { size_text: sizeText }))
.catch((error) => {
showRequestError(error);
captureException(error);
});
}
render () {
const {
classes, className,
text, isCompact, isPopoverOpen, anchorEl,
onPopoverClose, onPopoverOpen, isDisabled,
iconClassName
} = this.props;
return (
<Fragment>
<Button
onClick={isDisabled ? _.noop : onPopoverOpen}
className={cn(classes.button, className)}
>
<FlashOnIcon
fontSize="small"
className={cn(classes.icon, iconClassName)}
/>
<If condition={!isCompact}>
<div className={classes.text}>{text}</div>
</If>
</Button>
<If condition={!isDisabled && isPopoverOpen}>
<CardEstimatePopover
anchorEl={anchorEl}
isPopoverOpen={isPopoverOpen}
value={text}
onPopoverClose={onPopoverClose}
onSave={this.handleSave}
/>
</If>
</Fragment>
);
}
}
export default compose(
React.memo,
withStyles(styles),
withPopoverToggler
)(Size);