Передача строковой переменной в функцию вычитания Moment.js - PullRequest
0 голосов
/ 28 ноября 2018

Я создаю веб-сайт с выпадающим списком и на основе таймфрейма (день, неделя, месяц, квартал, год), который пользователь выбирает, будет отображаться другой результат.Вместо того, чтобы писать 5 разных функций, я хотел бы написать одну функцию, которая принимает таймфрейм в качестве параметра и передает его в функцию moment (). Subtract ().Код ниже.

let timeFrameString = '"' + timeframe + 's"';
let dateTo = moment().subtract(1, timeFrameString).format('YYYY-MM-DD');

Это не работает.Я записал в консоль timeFrameString, и он отображается точно так, как я набрал бы его, если бы я не использовал переменную, и я запустил точно такой же код, просто набрав слово «days», и он отлично работает.

Есть предложения?

Ответы [ 3 ]

0 голосов
/ 28 ноября 2018
Edited

как Nuwan Attanayake решение сработало для вас

, и вы хотите одновременно subtract multiple different keys, вы можете передать их как объектный литерал, подобный.

moment().subtract(7, 'days').subtract(1, 'months'); // with chaining
moment().subtract({days:7,months:1}); // with object literal
0 голосов
/ 28 ноября 2018

вам не нужно добавлять двойные кавычки.Вы можете передать таймфрейм как параметр и получить toDate, как показано ниже для стандартных таймфреймов.например,

function getDateForTimeFrame(timeFrame) {
    return  moment().subtract(1, timeFrame).format('YYYY-MM-DD');
}

let timeFrame = "month"; // "day", "week"
let dateTo = getDateForTimeFrame(timeFrame );
console.log('dateTo :', dateTo)
0 голосов
/ 28 ноября 2018

попробуйте,

let timeFrameString = timeframe + 's';

let dateTo = moment().subtract(1, timeFrameString).format('YYYY-MM-DD');
...