Array.indexOf() return 令人困惑的结果 JavaScript

Array.indexOf() return confusing results JavaScript

所以我试图 return 一个数字,它被赋予一个像 'tue' 这样的字符串,表示星期几。 所以我想我会在包含工作日

的数组中获取字符串 'tue' 的索引
week_days = ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat'];

var date = new Date();

var first_month_day = String(new Date(date.getFullYear(), date.getMonth(), 1).toString().slice(0, 4).toLowerCase());

var indexOf = week_days.indexOf(first_month_day)
return indexOf;

first_month_day = 'tue' 截至今天,当我评估该代码时。 因此我会假设 运行

week_day.indexOf(first_month_day)

会 return 2 但我得到 -1。所以如果我做

而不是上面的 运行
week_days.indexOf('tue')

我得到了想要的 2 我已经确保 first_month_day 是一个使用 typeof 的字符串,我只是不知道为什么它会保留 return ing -1 每当我知道它存在于数组中时。

正如 Robin Zigmond 所说,.slice(0, 4) 将给出一个长度为 4 的字符串,因此您从 firstMonthDay 得到的是“tue”而不是“tue”。

const weekDays = ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat'];

const date = new Date();

const firstMonthDay = String(new Date(date.getFullYear(), date.getMonth(), 1).toString().slice(0, 3).toLowerCase());

const index = weekDays.indexOf(firstMonthDay);
console.log(index);