将数组拆分为两个数组

ell*_*uty 36 javascript jquery

var arr = ['a', 'b', 'c', 'd', 'e', 'f'];
var point = 'c';
Run Code Online (Sandbox Code Playgroud)

如何根据"点"变量将"arr"拆分为两个数组,如:

['a', 'b']
Run Code Online (Sandbox Code Playgroud)

['d', 'e', 'f']
Run Code Online (Sandbox Code Playgroud)

ram*_*jan 41

var arr2 = ['a', 'b', 'c', 'd', 'e', 'f'];
arr = arr2.splice(0, arr2.indexOf('c'));
Run Code Online (Sandbox Code Playgroud)

要从arr2中删除'c':

arr2.splice(0,1);
Run Code Online (Sandbox Code Playgroud)

arr包含前两个元素,arr2包含最后三个元素.

这做了一些假设(比如arr2在第一次分配时总是包含'point'),因此必要时添加一些正确性检查边界情况.


Jua*_*des 16

使用indexOfslice

var arr = ['a', 'b', 'c', 'd', 'e', 'f'];

var indexToSplit = arr.indexOf('c');
var first = arr.slice(0, indexToSplit);
var second = arr.slice(indexToSplit + 1);

console.log({first, second});
Run Code Online (Sandbox Code Playgroud)

  • end索引是排他性的(与start包括在内)相反,因此它应该是second = arr.slice(indexToSplit);(无需加1) (2认同)

Jul*_*eri 10

分享我在访问此页面后最终制作的便利功能.

function chunkArray(arr,n){
     var chunkLength = Math.max(arr.length/n ,1);
     var chunks = [];
     for (var i = 0; i < n; i++) {
         if(chunkLength*(i+1)<=arr.length)chunks.push(arr.slice(chunkLength*i, chunkLength*(i+1)));
     }
     return chunks; 
 }
Run Code Online (Sandbox Code Playgroud)

样品用法:

chunkArray([1,2,3,4,5,6],2);
//returns [[1,2,3],[4,5,6]]

chunkArray([1,2,3,4,5,6,7],2);
//returns [[1,2,3],[4,5,6,7]]

chunkArray([1,2,3,4,5,6],3);
//returns [[1,2],[3,4],[5,6]]

chunkArray([1,2,3,4,5,6,7,8],3);
//returns [[1,2],[3,4,5],[6,7,8]]

chunkArray([1,2,3,4,5,6,7,8],42);//over chunk
//returns [[1],[2],[3],[4],[5],[6],[7],[8]]
Run Code Online (Sandbox Code Playgroud)


Ser*_*sev 6

试试这个:

var arr = ['a', 'b', 'c', 'd', 'e', 'f'];
var point = 'c';

var idx = arr.indexOf(point);

arr.slice(0, idx) // ["a", "b"]
arr.slice(idx + 1) // ["d", "e", "f"]
Run Code Online (Sandbox Code Playgroud)