我如何统一地从数组中删除索引
how do i remove an index from an array in unity
我得到了这个代码:
string[] changedHobbyList = listOfHobbies;
string[] finishedHobbyList = new string[3];
for (int i = 0; i < 3; i++)
{
int num = Random.Range(0, changedHobbyList.Length-1);
finishedHobbyList[i] = changedHobbyList[num];
for (int l = num -1 ; l < changedHobbyList.Length; l++)
{
changedHobbyList[l] = changedHobbyList[l+1];
}
}
来自 https://www.includehelp.com/dot-net/delete-an-element-from-given-position-from-array-using-c-sharp-program.aspx,我得到了一个索引越界错误,我知道我是怎么得到它的,但是我想不出一种方法来修复它,也无法让它正常工作,所以如果你有更好的主意,谢谢
num 是什么值?你的两个数组的长度是多少?
您的 for 循环看起来像是将所有内容从右移到左。您可能会越界,因为您的 listOfHobbies 长度大于 changedHobbies,这可能发生在 changedHobbyList[l+1].
编辑:
查看修改后的循环,是因为你检查了for循环
l < changedHobbyList.Length
当 l 比长度小 1 时,你就越界了,你像这样访问数组:
intArray[l+1];
考虑将其更改为:
for (int l = num -1 ; l < changedHobbyList.Length - 1; l++)
{
changedHobbyList[l] = changedHobbyList[l+1];
}
string[] changedList = new string[] {"hi,"cheese","more cheese"};
string[] changingList = new string[changedList.Length-1];
int num = *index being removed*;
int spot = 0;
for (int l = 0; l < changedList.Length; l++)
{
if (l != num){
changingList[spot] = changedList[l];
spot++;
changedList = changingList;
}
这基本上是创建一个新列表,然后将其替换为您输入的列表的名称
我得到了这个代码:
string[] changedHobbyList = listOfHobbies;
string[] finishedHobbyList = new string[3];
for (int i = 0; i < 3; i++)
{
int num = Random.Range(0, changedHobbyList.Length-1);
finishedHobbyList[i] = changedHobbyList[num];
for (int l = num -1 ; l < changedHobbyList.Length; l++)
{
changedHobbyList[l] = changedHobbyList[l+1];
}
}
来自 https://www.includehelp.com/dot-net/delete-an-element-from-given-position-from-array-using-c-sharp-program.aspx,我得到了一个索引越界错误,我知道我是怎么得到它的,但是我想不出一种方法来修复它,也无法让它正常工作,所以如果你有更好的主意,谢谢
num 是什么值?你的两个数组的长度是多少?
您的 for 循环看起来像是将所有内容从右移到左。您可能会越界,因为您的 listOfHobbies 长度大于 changedHobbies,这可能发生在 changedHobbyList[l+1].
编辑:
查看修改后的循环,是因为你检查了for循环
l < changedHobbyList.Length
当 l 比长度小 1 时,你就越界了,你像这样访问数组:
intArray[l+1];
考虑将其更改为:
for (int l = num -1 ; l < changedHobbyList.Length - 1; l++)
{
changedHobbyList[l] = changedHobbyList[l+1];
}
string[] changedList = new string[] {"hi,"cheese","more cheese"};
string[] changingList = new string[changedList.Length-1];
int num = *index being removed*;
int spot = 0;
for (int l = 0; l < changedList.Length; l++)
{
if (l != num){
changingList[spot] = changedList[l];
spot++;
changedList = changingList;
}
这基本上是创建一个新列表,然后将其替换为您输入的列表的名称