我有兩個數組。一個是空白的,另一個是數據。我選擇隨機候選人並將其粘貼到我的空白數組中。複製並更新數組值更新原始數組值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對我或者答案是一個問題。對不起,不明白。 –