说你有这个:
["10:00 PM", "10:15 PM", "10:30 PM", "10:45 PM", "11:00 PM"]
我想在"10:30 PM"
分割或爆炸这个数组并抓住剩下的数组:
["10:45 PM", "11:00 PM"]
有什么想法吗?
我可以迭代它然后匹配每个结果然后构建另一个数组,我在想是否有“内置”方式。
答案 0 :(得分:2)
var times = ["10:00 PM", "10:15 PM", "10:30 PM", "10:45 PM", "11:00 PM"];
// without altering the array
var newTimes = times.slice(times.indexOf("10:30 PM") + 1);
// or, altering the array
times.splice(times.indexOf("10:30 PM") + 1);
答案 1 :(得分:1)
@ sahbeewah的解决方案很好,另一种(破坏性的)可能性是
while (array.pop() !== '10:30 PM") { }
虽然您还需要处理非幸福案件。
我们可以使用String#split
向Array#reduce
写一个广义模拟,如下所示:
function split_array(arr, delim) {
return arr.reduce(function(result, elt) {
if (delim === elt) {
result.push([]);
} else {
result[result.length-1].push(elt);
}
return result;
}, [[]]);
}
然后
split_array(times, "10:30 PM") // [["10:00 PM", "10:15 PM"], ["10:45 PM", "11:00 PM"]]
所以我们的结果是split_array(times, "10:30 PM")[1]
。
一个明显的扩展是传递一个函数来代替delim
来指定更一般的“分隔符”。
答案 2 :(得分:0)
您可以使用.splice()来执行此操作..例如
var array = ["10:00 PM", "10:15 PM", "10:30 PM", "10:45 PM", "11:00 PM"];
var index = array.indexOf('10:30 PM');
var part2 = array.splice(index + 1);
console.log(array, part2)