使用拼接从数组中删除子数组

Removing subarray from array with splice

我正在使用 splice 方法从数组中删除一个子数组,代码如下:


    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)
    }


输出为:

[ [ 'PENNY', 1.01 ],
  [ 'NICKEL', 2.05 ],
  [ 'DIME', 3.1 ],
  [ 'QUARTER', 4.25 ],
  [ 'ONE', 90 ],
  [ 'FIVE', 55 ],
  [ 'TEN', 20 ],
  [ 'TWENTY', 60 ],
  [] /// removed elements from this array, but not the array itself ]

如您所见,符合条件的元素已被删除,我仍然留下一个空数组。但是我想完全删除它!

有什么帮助吗?

您是从子数组中删除项目,而不是从数组本身中删除项目。

要从顶部数组中删除项目,您应该这样做:

cid.splice(i, 1) 而不是 cid[i].splice(0)

for(let i = 0; i < cid.length; i++) {
    if (coinsValue[cid[i][0]] < troco && cid[i][1] > 0) {
        available += cid[i][1];
    } else if (coinsValue[cid[i][0]] > troco) {
        cid.splice(i, 1);
    }
}