You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用slice切分数组返回空数组,如何将数组对半分割?

解决数组对半分割问题,以及slice返回空数组的原因

嘿,我来帮你理清这个问题!首先咱们先说说为什么slice会返回空数组——大概率是你用错了它的参数规则:slice(start, end)里,start是起始索引(包含),end是结束索引(不包含),如果start的值大于等于end,或者start超过了数组的最大索引,就会返回空数组。比如给一个长度为5的数组用slice(5, 10),或者slice(3, 1),结果都是空的。

接下来是正确的对半分割方法,其实很简单,只需要先算出数组的中间位置,再用slice分别截取前后两部分就行。这里分两种情况,你可以根据需求选:

  • 把后半部分留更长(奇数长度时):用Math.floor取中间索引

    const arr = [1, 2, 3, 4, 5];
    const mid = Math.floor(arr.length / 2); // 计算得2
    const firstHalf = arr.slice(0, mid); // 前半部分:[1, 2]
    const secondHalf = arr.slice(mid); // 后半部分:[3, 4, 5]
    
  • 把前半部分留更长(奇数长度时):用Math.ceil取中间索引

    const arr = [1, 2, 3, 4, 5];
    const mid = Math.ceil(arr.length / 2); // 计算得3
    const firstHalf = arr.slice(0, mid); // 前半部分:[1, 2, 3]
    const secondHalf = arr.slice(mid); // 后半部分:[4, 5]
    

如果是偶数长度的数组,两种方法结果完全一致,比如长度为6的数组,Math.floor(6/2)和Math.ceil(6/2)都是3,前后各3个元素。

另外要注意,slice不会修改原数组,返回的是全新的数组,这点很友好~

内容的提问来源于stack exchange,提问作者Edo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 08:57:26