'0.0000001024'.replace(/^0?\.?0*/, '') // получится строка "1024"
0.0000001024
после преобразования toString()
мы увидим "1.024e-7"const selectTrack = new Promise(resolve => {
document.querySelectorAll('.chartsCard')
.forEach(el => el.addEventListener('click', () => resolve(el.dataset.musicid)));
});
selectTrack.then(track => {
// тут что-то сделать с выбранным треком
console.log('выбранный трек', track);
});
const diffHours = Math.ceil((endDate - startDate) / 36e5); // точно в бОльшую сторону округлять?
const days = Math.floor(diffHours / 24);
const hours = diffHours - days * 24;
console.log(`Срок аренды: ${days} дней и ${hours} часов`);
D = new Date();
D.setHours(D.getHours() + 12) // подвинули вперёд на 12 часов
даты корректируются «автомагически».(
(start, finish) => {
const date = new Date(start);
const dateFinish = new Date(finish);
const result = [];
while (date <= dateFinish) {
result.push(date.toISOString());
date.setHours(date.getHours() + 12);
}
return result;
}
)('2020-01-01T00:00:00+03:00', '2020-03-15T11:58:01+03:00')
/*
Array(149) [ "2019-12-31T21:00:00.000Z", "2020-01-01T09:00:00.000Z", "2020-01-01T21:00:00.000Z", "2020-01-02T09:00:00.000Z", "2020-01-02T21:00:00.000Z", "2020-01-03T09:00:00.000Z", "2020-01-03T21:00:00.000Z", "2020-01-04T09:00:00.000Z", "2020-01-04T21:00:00.000Z", "2020-01-05T09:00:00.000Z", … ]
*/
element.hasAttribute('maxlength')
element.setAttribute('maxlength', 20)
document.querySelectorAll('input[type=password]')
forEach()
maxlength
;const pickProps = (object, ...keys) => keys.reduce((acc, c) => ({ ...acc, [c]: object[c] }), {});
let payload = {
data: pickProps(
this,
'customer',
'tool_type',
'tool_brand',
'tool_model',
'tool_serial_code',
'defect_type',
'defect_description',
'request_type',
'request_description',
'status'
),
}
function getLargestExpressionResult(a, b) {
let x, max = a + b;
x = a - b;
if (x > max) max = x;
x = a * b;
if (x > max) max = x;
x = a / b;
if (x > max) max = x;
return max;
}
Затем попробуйте оптимизировать, сократить, написать красивее и т.п., если время позволяет.const getLargestExpressionResult = (a, b) => '+-*/'
.split('')
.map(op => eval([+a, op, +b].join('')))
.sort((a, b) => a - b)
.pop();
Это плохой переусложнённый пример, т.к. тут много строк и eval()
— потенциальная дыра в безопасности.eval()
© const data = [{"id":1,"status":"CREATED"},{"id":2,"status":"CANCELED"}];
const RU_CREATED = 'СОЗДАНО';
const RU_CANCELED = 'ОТМЕНЕНО';
const translate = (data, lang) => data.forEach(item => {
console.log(`id: ${item.id}, status: ${eval(lang + '_' + item.status)}`);
});
translate(data, 'RU');
// id: 1, status: СОЗДАНО
// id: 2, status: ОТМЕНЕНО
В проде конечно не стоит использовать eval()
, и вместо этого сделать не константы, а «словарь» — объект с ключами как статусы, и значениями их переводами: const dict = {
RU: {
CREATED: 'СОЗДАНО',
CANCELED: 'ОТМЕНЕНО',
},
DE: {
CREATED: 'ERSTELLT',
CANCELED: 'ABGESAGT',
},
};