Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/477.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript删除数组_Javascript - Fatal编程技术网

JavaScript删除数组

JavaScript删除数组,javascript,Javascript,我试着做删除武器[I]但即使我使用了武器,长度仍然是1。即使它应该是0。如何明确地从武器[]阵列中删除阵列 我通过这样做梳理武器阵列: for (var i = 0, setsLen = weapons.length; i < setsLen; ++i ) { var searchWeapon = weapons[i].split("|"); // console.log('['+i+'] >> Weapon

我试着做
删除武器[I]但即使我使用了
武器,长度仍然是1。即使它应该是0。如何明确地从
武器[]
阵列中删除阵列

我通过这样做梳理武器阵列:

        for (var i = 0, setsLen = weapons.length; i < setsLen; ++i ) {

             var searchWeapon = weapons[i].split("|");
             // console.log('['+i+'] >> Weapon ID: ' + searchWeapon[0] + ' | Y: ' + searchWeapon[1] + ' | X: ' + searchWeapon[2]);    
             if (searchWeapon[1] == Y && searchWeapon[2] == X) { 
                delete weapons[i];
             }           
            }
for(var i=0,setsLen=arms.length;i>武器ID:'+SearchArmover[0]+'| Y:'+SearchArmover[1]+'| X:'+SearchArmover[2]);
如果(搜索武器[1]==Y和搜索武器[2]==X){
删除武器[一];
}           
}
我将每个数组存储为
3 | 10 | 4
,其中
3
是武器ID,
10
是Y,
4
是X。

使用

array.splice(index,howmany)
使用

array.splice(index,howmany)

delete
ing一个数组元素会在元素的位置留下一个未定义的洞。您可能想使用
数组.splice

var myArray = [1,2,3];
delete myArray[1]; // myArray is now [1, undefined, 3];

var myArray2 = [1,2,3];
myArray2.splice(1,1); // myArray2 is [1, 3]

delete
ing一个数组元素会在元素的位置留下一个未定义的洞。您可能想使用
数组.splice

var myArray = [1,2,3];
delete myArray[1]; // myArray is now [1, undefined, 3];

var myArray2 = [1,2,3];
myArray2.splice(1,1); // myArray2 is [1, 3]

检查.splice方法

使用您的示例:

for (var i = 0, setsLen = weapons.length; i < setsLen; ++i ) {
  var searchWeapon = weapons[i].split("|");
  if (searchWeapon[1] == Y && searchWeapon[2] == X) { 
    weapons.splice(i,1);
  }           
}
for(var i=0,setsLen=arms.length;i
检查.splice方法

使用您的示例:

for (var i = 0, setsLen = weapons.length; i < setsLen; ++i ) {
  var searchWeapon = weapons[i].split("|");
  if (searchWeapon[1] == Y && searchWeapon[2] == X) { 
    weapons.splice(i,1);
  }           
}
for(var i=0,setsLen=arms.length;i
如果您的数组不需要排序,您可以使用
array.pop()
,因为它非常快

if(index == array.length-1) array.pop();
else array[index] = array.pop();

此方法不需要在您完成的
splice()'d
之后重新索引所有内容,因此无论您的数组长度是5还是350000,它都保持快速。

如果您的数组不需要排序,您可以使用
array.pop()
,因为它速度非常快

if(index == array.length-1) array.pop();
else array[index] = array.pop();

此方法不需要在您所做的
splice()'d
之后重新索引所有内容,因此无论您的数组长度是5还是350000,它都会保持快速。

除了上述答案之外: 您应该从头到尾遍历数组,否则如果删除了某个项,您将丢失循环中的元素。
演示:

以上答案的补充: 您应该从头到尾遍历数组,否则如果删除了某个项,您将丢失循环中的元素。
演示:

要从数组中删除元素,请使用
splace
方法。例如:

var myArr = ["apple", "orange", "pear"];
alert(myArr.length); // 3
myArr.splice(1,1); // start at 1th index (i.e 2nd element), remove 1 element
alert(myArr.length); // 2
for (var i=0; i<myArr.length; i++) alert(myArr[i]); // "apple", "pear"
var myArr=[“苹果”、“橘子”、“梨”];
警报(myArr.length);//3.
myArr.拼接(1,1);//从第1个索引(即第2个元素)开始,删除1个元素
警报(myArr.length);//2.

对于(var i=0;i要从数组中删除元素,请使用
splace
方法。示例:

var myArr = ["apple", "orange", "pear"];
alert(myArr.length); // 3
myArr.splice(1,1); // start at 1th index (i.e 2nd element), remove 1 element
alert(myArr.length); // 2
for (var i=0; i<myArr.length; i++) alert(myArr[i]); // "apple", "pear"
var myArr=[“苹果”、“橘子”、“梨”];
警报(myArr.length);//3
myArr.splice(1,1);//从第1个索引(即第2个元素)开始,删除1个元素
警报(myArr.length);//2

对于(var i=0;一段代码。但在现实环境中,这是否比
splice
快得多?是的。快得多。这取决于数组的长度。pop()始终是相同的速度,而拼接会随着阵列的长度而变慢。没有问题。当你列出500-1000个投射物和其他东西时,游戏开发人员更需要记住这一点。代码不错。但在现实世界中,这比
拼接
快吗?是的。快得多。嗯,取决于长度您的数组的始终是相同的速度,而splice会随着阵列的长度而变慢。没有问题。当你列出500-1000个射弹和其他东西时,更需要记住的是游戏开发人员。哈哈。谢谢你。splice做到了。splice也是一部可怕的电影。链接到not。谢谢你。splice做到了这一点。splice也是一部好电影恐怖电影。链接到not.LOLs。是的,当然:
Array.prototype.splace=Array.prototype.splice;
LOLs。是的,当然:
Array.prototype.splace=Array.prototype.splice;