2017-08-30 82 views
0

我一直坚持几个小时,试图从一个阵列(玩家)随机选择一个物品到另一个(队伍1)。Javascript:试图随机地将物品从一个阵列移动到另一个阵列

我已经通过做别的事情与拼接工作,但不幸的是拼接创建一个数组本身与删除项目,所以我最终得到一个数组与数组。

这是我走到这一步:

var players = ["P1", "P2", "P3", "P4"]; 

var team1 = []; 
var team2 = []; 

var select = Math.floor(Math.random() * players.length); 
var tmp; 

if (team1.length < 2) { 
    tmp.push(players.splice(select, 1)); 
    team1.push(tmp.pop); 
} 

console.log(team1); 
console.log(tmp); 
console.log(players); 

如果我做的这一切错了,我很抱歉,还是蛮新的这个网站,帮助表示赞赏。

+0

为了澄清我想要的东西是随机从一个数组中移除然后添加到另一个数组 – Buckets

+0

在这里检查它是重复https://stackoverflow.com/questions/31829166/move-values-from-one-array-to-another-and-remove-them –

+0

重复的问题 –

回答

1

你必须同时剪接和推动团队从数组中选择第一个元素,

var players = ["P1", "P2", "P3", "P4", "P5", "P6", "P7", "P8"]; 

var team1 = []; 
var team2 = []; 

var tmp = []; 
while (team1.length < 4) { 
    tmp.push(players.splice(Math.floor(Math.random() * players.length - 1), 1)[0]); 
    team1.push(tmp.pop()); 
} 

while (team2.length < 4) { 
    tmp.push(players.splice(Math.floor(Math.random() * players.length - 1), 1)[0]); 
    team2.push(tmp.pop()); 
} 

console.log(team1); 
console.log(team2); 
console.log(tmp); 
console.log(players); 
+0

谢谢你的帮助,为什么是这样的我可以问吗?我甚至不知道你可以在推送和拼接结束时选择索引 – Buckets

+0

无论结果如果函数以结构(数组或结构列表)的形式返回数组的结果,我们都可以访问其中的值索引。 –

+0

对不起还有一个问题,我把它改成了一个while循环,所以我可以把它们分成两个团队,它只能工作一部分时间,其他时间将未定义到团队数组中,你知道为什么吗?这里是链接:https://codepen.io/Buckets/pen/wqQxzP?editors=1111 – Buckets

1

你试试这样在您的情况

var players = ["P1", "P2", "P3", "P4"]; 

var team1 = []; 
var team2 = []; 
var temp = players.slice(); 

for(i=0; i<temp.length; i++){ 
    var select = Math.floor(Math.random() * temp.length); 
    console.log(select); 
    if (team1.length <= temp.length/2) { 
     team1.push(temp[select]); 
     } 
     temp.splice(select, 1); 
} 
team2 = temp.slice(); 

console.log('team 1 ---',team1); 
console.log('team 2 ---',team2); 
console.log('players ---', players); 
相关问题