在JavaScript中删除Object Array中的引号,作为参数传递给RRule.js



我有一个对象数组,看起来像:

["Sunday","Monday","Tuesday"]

有没有办法将其转换为:

[Sunday,Monday,Tuesday]

也就是说,只需去掉撇号。我在一些地方读到JSON.parse((方法可以工作,但从未找到有效的答案。此外,我是这方面的新手,所以如果您能键入代码片段作为答案并附上解释,我将不胜感激。

谢谢!

更新如果以上内容没有意义,我深表歉意,以下是完整的解释。我有7个复选框,通过这些复选框我可以获得用户点击的星期几。我正在尝试使用RRULE.js(参见链接(实现重复事件

我还执行了

console.log(typeof(selected_days));

它记录的是OBJECT而不是STRING。如果您了解RRule.js,我想将从复选框中选择的天数传递给"byweekday"属性。作为参考,这是典型的RRule.js规则的样子:

rule = new RRule({
freq: RRule.WEEKLY,
count: 30,
interval: 1,
byweekday: [RRule.MO, RRule.TU, RRule.WE, RRule.TH, RRule.FR, RRule.SA, RRule.SU]
})

唯一的问题是,当我在"byweeday"属性中传递数组时,它会返回一个错误,说

工作日未定义

这就是为什么我想更新我的数组,它看起来像:

["RRule.SU", "RRule.MO", "RRule.TU", "RRule.WE", "RRule.TH", "RRule.FR", "RRule.SA"]

变成RRule.js:可以读取的东西

[RRule.MO, RRule.TU, RRule.WE, RRule.TH, RRule.FR, RRule.SA, RRule.SU]

我希望这能澄清我的问题。

更新以下是请求的代码:

<script type="text/javascript">
function saveRule() {
//Create an Array.
var selected = new Array();
var selected_days = document.getElementById("days");
//Reference all the CheckBoxes in Table.
var chks = selected_days.getElementsByTagName("INPUT");
// Loop and push the checked CheckBox value in Array.
for (var i = 0; i < chks.length; i++) {
if (chks[i].checked) {
selected.push(chks[i].value);
}
}
//Display the selected CheckBox values.
if (selected.length > 0) {
console.log("Selected values: " + selected.join(","));
}
var getFreqType = document.querySelector('input[name="frequencytype"]:checked');        
console.log(getFreqType.value)
var getInterval = document.querySelector('input[name="interval"]');        
console.log(getInterval.value)
/**
* !RRULE BELOW
* */
console.log("Rubadubadoooo")
console.log(typeof(selected));
console.log(selected);
console.log(getFreqType.value);
console.log(getInterval.value);   
const selected_object = JSON.toString(selected);
console.log(selected_object);
console.log("RRULE is going ot be displayed below");
const RRule = rrule.RRule;
const rule = new RRule({
freq: RRule.WEEKLY  ,
interval: getInterval.value,
count: 5,
byweekday: selected,
//dtstart: new Date(Date.UTC(2021, 1, 1, 10, 30)),
//until: new Date(Date.UTC(2020, 12, 31))
});
console.log(rule.toString());
console.log(rule.all().length)
}


</script>

所以我根据@Barmer的说法找到了问题的解决方案。JSON。操作不起作用。我实现了switch语句并制作了整数数组,并将其作为变量进一步传递给RRule.js 的属性

这是我实现的解决方案。谢谢大家,干杯!

for (var i = 0; i < chks.length; i++) {
if (chks[i].checked) {
selected.push(chks[i].value);
rule_array.push(i);
var chosen_day = chks[i].value;
switch (chosen_day) {
case 'RRule.MO':
array_rule.push(0);
break;
case 'RRule.TU':
array_rule.push(1);
break;
case 'RRule.WE':
array_rule.push(2);
break;
case 'RRule.TH':
array_rule.push(3);
break;
case 'RRule.FR':
array_rule.push(4);
break;
case 'RRule.SA':
array_rule.push(5);
break;
case 'RRule.SU':
array_rule.push(6);
break;
default:
console.log("Please choose a day");
break;
}
}
}

const rule = new RRule({
freq: freq_type,
interval: getInterval.value,
wkst: RRule.SU,
count: 5,
byweekday: array_rule,
//dtstart: new Date(Date.UTC(2021, 1, 1, 10, 30)),
//until: new Date(Date.UTC(2020, 12, 31))
});

最新更新