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

JS中使用slice()从数组末尾取元素时传0返回值异常问题

问题原因分析
  • 当你传入n=0时,第一行n = -n执行后n的值为0
  • JS中0属于假值,!0的判断结果为true,因此condition会被赋值为-1
  • 数组的slice(-1)逻辑就是取最后一个元素,因此返回[3]而非预期的空数组
  • 你之前设置默认值失败的核心原因是逻辑顺序错误:先对n取反再做判断,把默认值处理、非法值处理的逻辑混在了一起,语义不清晰
修复后的实现

直接按照takeRight的语义(从数组右侧取n个元素)调整逻辑即可:

const takeRight = (array, n = 1) => {
  // 取0个或者负数个直接返回空数组
  if (n <= 0) return []
  // slice本身支持负数偏移,偏移绝对值超过数组长度时自动返回整个数组,刚好匹配你的测试要求
  return array.slice(-n)
}
测试验证

所有用例均符合预期:

  • takeRight([1, 2, 3]) → 返回[3]
  • takeRight([1, 2, 3], 2) → 返回[2, 3]
  • takeRight([1, 2, 3], 5) → 返回[1, 2, 3]
  • takeRight([1, 2, 3], 0) → 返回[]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 05:57:05