【问题标题】:array.splice function in javascriptjavascript中的array.splice函数
【发布时间】:2021-08-26 16:56:12
【问题描述】:

我正在尝试制作策略游戏,但我无法从棋盘上删除敌人标记。 array.splice(index,number) 是否按数字缩短数组长度?

let map1 = [/* enemy pieces in a grid*/]       
let enemyPositions = [/* numeric positions of enemy pieces*/]          

// finds the value of piece\/
let attackVal = getTropperValue(pieceIndex);
let defenseVal = getTropperValue(pieceIndex+10);

// if the miner is attacking a bomb, the miner wins
if (attackVal===3 && defenseVal === 11 && facing === "down")
{
  setTimeout( () => removePiece(pieceIndex+10),1000);
  map1.splice(pieceIndex+10,1,"");
  enemyPositions.splice(pieceIndex+10,1);
}

【问题讨论】:

  • array.splice(index,number) 是否按数字缩短数组的长度?”答案是肯定的。但我不确定这个答案对你有什么帮助。你最好描述一下你遇到的问题。
  • "按数字缩短数组的长度" - 有点? a = [0,1,2,3,4]; a.splice(2); 将导致 a 成为 [0,1]
  • 我将数组输出到控制台,但在我删除的空间中显示
  • @bebro22 请确保问题中的示例是minimal reproducible example?我们无法调试我们看不到的东西。
  • “array.splice(index,number) 做 X 吗?” — 阅读documentation

标签: javascript arrays 2d-games


【解决方案1】:

拼接方法的工作原理如下: 第一个参数指定要删除的第一项的索引。 第二个参数指定要删除的项目数。 它返回一个包含已删除项目的新数组

看例子

const arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
const arr2 = arr.splice(4, 2);

最后我们有

arr  [ 1, 2, 3, 4, 7, 8, 9 ]
arr2 [ 5, 6 ]

例如,如果您只想删除第 n 个项目,您应该使用...

arr.splice(n - 1, 1);

【讨论】:

  • 所以 splice 实际上并没有改变它被调用的数组?
  • 确实如此。再看arr的状态,少了5和6,那些数字在arr2
猜你喜欢
  • 2021-05-02
  • 2017-04-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多