对于令人困惑的标题感到抱歉。
如果我有一个数组['Peter','James','Susan','Thomas']
并且我想得到array.length
个新数组(在这种情况下是4),每个新数组的名称都少一个原来的。
所以我想要的是这4个阵列:
['James','Susan','Thomas']
['Peter','Susan','Thomas']
['Peter','James','Thomas']
['Peter','James','Susan']
如果我想将每个新数组发送给那些名字不存在的人。 (所以我想发送彼得['James','Susan','Thomas']
和詹姆斯['Peter','Susan','Thomas']
。
我目前的代码是:
for(var i=0;i<array.length;i++){
var player = array[i]
var newArray= array.splice(i,1)
io.to(player)emit('message', newArray)
}
返回的数组中只有一个名称。
答案 0 :(得分:0)
问题是array.splice()
修改了原始数组。你需要先复制它,所以你不要破坏原件。您也不应将.splice
分配给newArray
,因为它会返回已删除元素的数组,而不是已修改的数组。
for (var i = 0; i < array.length; i++) {
var player = array[i];
var newArray = array.slice();
newArray.splice(i, 1);
io.to(player).emit('message', newArray);
}
答案 1 :(得分:0)
def num1(num,a,b):
if num == 0:
a=a+1
num=num+1
elif num == 1:
b=b+1
return num
return a
return b
实际上会改变它所调用的数组。它可能令人困惑的原因是它还返回一个包含刚刚删除的元素的数组 - 因此您收到一个包含单个项目的数组。请尝试使用Array#splice
,并在运行Array#forEach
之前使用array
复制Array#slice
,以便每次迭代都不会损坏原始数组。
splice