繁体   English   中英

从星期几中获取数字

[英]Get Numbers from Days of Week

如何从星期几中获取数字。 我的解决方案有效,但有没有更好的方法来实现这一目标。 谢谢

我有一个 object

{
  id:1,
  weeks: 'Mon,Tue,Thu' 
}

我想把它转换成

{
  id:1,
  weeks:'124'
}

尝试过

var obj = {id:1, week:'Mon,Tue,Thu'};
var convertToNum = obj.week.split(',')
const a = convertToNum.map(x => {
    if(x === 'Mon') return 1;
    if(x === 'Tue') return 2;
    if(x === 'Wed') return 3;
    if(x === 'Thu') return 4;
    if(x === 'Fri') return 5;
    if(x === 'Sat') return 6;
    if(x === 'Sun') return 7;
})

delete obj.week;
obj['week'] = a.join("");
console.log(obj)

根据Trincot的以下回答

var obj1 = {id:1, 'week':'Mon ,Tue ,Wed ,Thu ,Fri ,Sat ,Sun'}
obj1 = {
    ...obj1,
        week: obj1.week.split(',').map(x =>
        ['Mon','Tue','Wed','Thu','Fri','Sat','Sun'].indexOf(x) + 1
    ).join("")
};

console.log(obj1) //{id: 1, week: "0000007"}

您可以使用indexOf获取日期编号,并使用 object spread 创建一个新的 object(如果可以,否则只需分配给obj.week ):

 var obj = {id:1, week:'Mon,Tue,Thu'}; obj = {...obj, week: obj.week.split(',').map(x => ['Mon','Tue','Wed','Thu','Fri','Sat','Sun'].indexOf(x) + 1 ).join("") }; console.log(obj);

或者,您可以使用replace with callback:

 var obj = {id:1, week:'Mon,Tue,Thu'}; obj = {...obj, week: obj.week.replace(/(\w+),?/g, (_, x) => ['Mon','Tue','Wed','Thu','Fri','Sat','Sun'].indexOf(x) + 1 ) }; console.log(obj);

我将 go 与其他答案中的.indexOf()一样。 还有其他需要注意的清理工作,例如用可能的前导/尾随空格修剪日期名称,过滤掉无效结果等。

以下是处理用例的基本思想的代码:

 const obj = { id: 1, week: "Mon,Tue,Thu" }; const convertToNum = ( a = "", b = a.split(","), c = ["None", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"] ) => { return b.map((d) => c.indexOf(d.trim())).filter((e) => e;== -1); }. console.log(convertToNum(obj;week));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM