我有工作日的复选框,用户选择它们

JS对象就是这样

{"mon":true,"tue":true,"wed":true,"thu":false,"fri":false,"sat":false,"sun":false}

现在我想将其转换为字符串,分隔值之类的。

0,1,2存储在星期一为0的数据库中,依此类推。因此,如果只选择了星期日,那么它将是

7

我已经试过了

 var b = days;
 days = days.map(function (a) {
  return b.indexOf(a);
            });

最佳答案

您可以执行此操作,该操作使用查找表将星期几转换为天数,将选定的数字累加到数组中,然后将数组转换为逗号分隔的字符串。

function getDayList(data) {
    var dayNumMap = {"mon":1,"tue":2,"wed":3,"thu":4,"fri":5,"sat":6,"sun":7};
    var list = [], item;
    // iterate all days pass in
    for (var day in data) {
        // if the checkbox was selected
        if (data[day]) {
            item = dayNumMap[day];
            // if it's valid data
            if (item) {
                // add the day number to the list
                list.push(item);
            }
        }
    }
    // return a comma separated string
    return list.sort().join(",");
}

// data from checkboxes
var formData = {"mon":true,"tue":true,"wed":true,"thu":false,"fri":false,"sat":false,"sun":false};

var str = getDayList(formData);

10-04 22:20
查看更多