如何在javascript中的某个点拆分数组?

时间:2014-09-17 03:45:09

标签: javascript arrays split

说你有这个:

["10:00 PM", "10:15 PM", "10:30 PM", "10:45 PM", "11:00 PM"]

我想在"10:30 PM"分割或爆炸这个数组并抓住剩下的数组:

["10:45 PM", "11:00 PM"]

有什么想法吗?

我可以迭代它然后匹配每个结果然后构建另一个数组,我在想是否有“内置”方式。

3 个答案:

答案 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#splitArray#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)