【问题标题】:Get Numbers from Days of Week从星期几中获取数字
【发布时间】:2023-01-03 00:04:44
【问题描述】:

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

我有一个对象

{
  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"}

【问题讨论】:

    标签: javascript


    【解决方案1】:

    您可以使用 indexOf 获取日期编号,然后对象传播以创建一个新对象(如果可以,否则只需分配给 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 与回调一起使用:

    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);

    【讨论】:

    • 我试过你的代码,它似乎没有按预期工作。我已经更新了我的问题。
    • 我相信在需要删除的字符串“Mon”之后有一个空白。无论如何谢谢你。
    • @BhokluSingh 使用 x.trim() 删除空间
    • 是的,它现在可以工作了。太感谢了。
    【解决方案2】:

    我会像其他答案一样使用.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));

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-22
      • 2017-11-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多