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

使用splice删除二维数组子数组仅留空数组如何完全删除

问题原因

你之前调用cid[i].splice(0)操作的是cid数组中的子数组,只会清空该子数组内部的元素,子数组本身仍然作为cid的元素存在,所以会残留空数组项。

解决方法

方案1:遍历直接删除外层数组项(推荐,性能更优)

把循环改为倒序遍历,符合删除条件时直接删除cid数组的对应项,不需要先清空子数组。倒序遍历可以避免删除元素后数组长度变化导致的索引错乱问题:

let available = 0
// 倒序遍历避免索引错乱
for(let i = cid.length - 1; i >= 0; i--) {
  if(coinsValue[cid[i][0]] < troco && cid[i][1] > 0) {
    available += cid[i][1]
  }
  if(coinsValue[cid[i][0]] > troco) {
    // 直接删除外层数组第i项,共删除1个元素
    cid.splice(i, 1)
  }
}

方案2:循环后过滤空数组

如果不想修改原有循环逻辑,可以在循环结束后用filter方法过滤掉所有空数组项:

// 原有逻辑不变
for(let i = 0; i < cid.length; i++) {
  if(coinsValue[cid[i][0]] < troco && cid[i][1] > 0)
    available += cid[i][1]
  if(coinsValue[cid[i][0]] > troco)
    cid[i].splice(0)
}
// 过滤所有长度为0的空数组项
cid = cid.filter(item => item.length > 0)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 16:39:02