我有两个数组。一个是空白的,另一个是数据。我选择随机候选人并将其粘贴到我的空白数组中。复制并更新数组值更新原始数组值javascript
由于我已经选择了这些候选人,我不希望他们的名字再次被选中,以及我不想松开他们在原始数组中的索引位置。为了避免再次选择,我设置了name = undefined。现在发生什么是我的重复数组也更新为undefined。
如果您运行下面的代码,切换到下面的行并检查selectedcandidates数组,它会给出更好的信息。
candidates[candidateIndex[i]].name= undefined;
我如何复制元素到另一个阵列和更新原有的阵列,无需事先影响复制array.Thanks。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<button onclick="selectCandidate()">Click Here !!!</button> <script>
var selectedCandidate=[];
var candidates = [
{name:"Alpha",
age:"21"
},
{name:"Beta",
age:"21"
},
{name:"Gamma",
age:"21"
},
{name:"Albert",
age:"21"
},
{name:"Alaks",
age:"21"
},
{
age:"21"
},
{
age:"21"
}
];
function selectCandidate(){
var candidateIndex = [];
for(i =0; i<2; i++){
var randomnumber = generateRandomNumber();
if(candidateIndex.indexOf(randomnumber) && candidates[randomnumber].name != undefined){
candidateIndex.push(randomnumber);
}
else{
i--;
}
}
var selectthiscandidate;
for(i=0; i< 2; i++){
selectthiscandidate = candidates[candidateIndex[i]];
selectedCandidate.push(selectthiscandidate);
candidates[candidateIndex[i]].name= undefined;
}
console.log(selectedCandidate);
console.log(candidates);
}
function generateRandomNumber(){
return Math.floor((Math.random() * candidates.length-1) + 1);
}
</script>
</body>
</html>
你推送到'selectedCandidate'只是从'candidate'中引用原始对象 – MysterX
与[克隆对象的最有效方法是什么]相关?(http://stackoverflow.com/questions/122102/what-is-the - 大多数高效的路-to-clone-an-object) –
@MysterX对我或者答案是一个问题。对不起,不明白。 –