【问题标题】:Slice from beginning if array ended javascript如果数组结束 javascript 从头开始切片
【发布时间】:2019-07-22 01:09:58
【问题描述】:
所以我正在开发一些过滤器,用户甚至可以从例如“星期五到星期二”中进行选择,但是我如何从日期数组中分割它们
var days = ["monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday"]
那么我如何从索引 5 切片到应该返回的 2:
["friday", "saturday", "sunday", "monday", "tuesday"]
【问题讨论】:
标签:
javascript
arrays
slice
【解决方案1】:
你可以使用
var days = ["monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday"]
const selection = [...days.slice(4), ...days.slice(0, 2)];
console.log(selection);
【解决方案2】:
Friday 位于索引 4 处,因此从索引 4 开始切片,.concat 具有索引 0 到 2 的切片:
const arr = ["monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday"]
console.log(arr.slice(4).concat(arr.slice(0, 2)));
【解决方案3】:
您可以创建一个简单的函数来测试结束是否小于开始并相应地切片:
let days = ["monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday"]
const wrapslice = (arr, start, end) =>{
return end < start
? arr.slice(start).concat(arr.slice(0, end))
: arr.slice(start, end)
}
console.log(wrapslice(days, 5, 2))
console.log(wrapslice(days, 2, 5))
console.log(wrapslice(days, 4))