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;