js,如何按照下标号去分割一个不等长的数组,下有详细

现在有一个数组[1,2,3,4,5,6,7]
我希望按照4所在的位置把数组分为两部分,
第一个部分是[1,2,3,4],第二个部分是[5,6,7]
有没有什么好办法呢?我注意到lodash里面的trunk或者网上的一些函数都是等分的

var arr1 = [1,2,3,4,5,6,7];
var arr = arr1.map(function(item,index,array){
return item*item*item;
})
返回的新数组arr则是元素立方运算后的新数组

var arr = [1,2,3,4,5,6,7];
var i = arr.indexOf(4)+1;
var a = arr.slice(0,i);
var b = arr.slice(i);

如果是按照下标号去分割

var arr = [1,2,3,4,5,6,7];
var i = 4;
var a = arr.slice(0,i);
var b = arr.slice(i);

var index = Math.ceil((arr.length+1)/2);
var arr1 = arr.slice(0,index);
var arr2 = arr.slice(index,arr.length-1);

 /**
* 数组分割
* @param list 数组
* @param item 分割表示
* @retuen obj before:标识前数据 after:标识后数据
*/
function segmentation(list,item){
    const obj = {before:[],after:[]}
    const itemIdx = list.indexOf(item);
    obj.before = list.slice(0,itemIdx+1);
    obj.after = list.slice(itemIdx+1);
    return obj
}

执行案例如下图:
图片说明
控制台输出如下图:

图片说明