我試圖以編程方式記住一個物件陣列,但我缺乏技能,我似乎也沒有在網上找到答案。
因此,我希望能夠在繪制 cardObj 時洗掉其反向(倒置)替代方案。請注意,如果反向版本首先是抽屜,我想做同樣的事情 - 從甲板上取下直立的。
這是代碼:
卡茲練習!練習!
過去、現在和未來的
傳播
PASTPRESENTFUTURE// ------------JAVASCRIPT--------------//
// CARDS OBJECT ------------------------------------------------------------------------------------>
let cardObj = [
{name: "0_Fool", imgUrl: "data/0_Fool.jpg"},
{name: "0_Fool_R", imgUrl: "data/0_Fool_R.jpg"},
//{name: "1_Magician", imgUrl: "data/1_Magician.jpg"},
//{name: "1_Magician_R", imgUrl: "data/1_Magician_R.jpg"},
];
//--- ------------------------------------------------------------------------------------>
//SHUFFLE CARDS ------------------------------------------------------------------------------------>
function shuffle(array){
let currentIndex = array.length, randomIndex;
while(currentIndex != 0){
randomIndex = Math.floor(Math.random() * currentIndex);
currentIndex--;
[array[currentIndex], array[randomIndex]] = [array[randomIndex], array[currentIndex]];
}
return array;
};
shuffle(cardObj);
//--- ------------------------------------------------------------------------------------>
//DRAW ------------------------------------------------------------------------------------>
function drawCard(id){
if(cardObj.length === 0){
return;
}
let castCard = document.getElementById(id);
let card = document.createElement('img');
card.setAttribute('src', cardObj[0].imgUrl);
card.setAttribute('height', '272');
card.setAttribute('width', '185');
card.innerHTML = cardObj[0].imgUrl;
if(castCard.id === 'imgPast'){
document.getElementById("btnPast").replaceChild(card, castCard);
}else if(castCard.id === 'imgPresent'){
document.getElementById("btnPresent").replaceChild(card, castCard);
}else if(castCard.id === 'imgFuture'){
document.getElementById("btnFuture").replaceChild(card, castCard);
}
if(cardObj[0].name === cardObj[0].name){
cardObj = cardObj.filter(function(f) {return f !== cardObj.name "_R"});
}
cardObj.shift();
return false;
}
//--- ----------------------------------------------------------------------------------</script></body></html>
uj5u.com熱心網友回復:
我在這里對您的問題感到很困惑,但我假設您想要的是根據繪制的卡片洗掉陣列的“相反”元素。
let cardObj = [
{name: "0_Fool", imgUrl: "data/0_Fool.jpg"},
{name: "0_Fool_R", imgUrl: "data/0_Fool_R.jpg"},
{name: "1_Magician", imgUrl: "data/1_Magician.jpg"},
{name: "1_Magician_R", imgUrl: "data/1_Magician_R.jpg"},
];
function drawCard(id){
if(cardObj.length === 0) return;
// assuming that all 'reverse' cards end with '_R' and that 'id' is the 'name'
const isReverse = id.endsWith('_R');
// construct opposite card ID
const oppositeCardID = isReverse ? id.substring(0, id.lastIndexOf('_')) : (id '_R');
// Find opposite card index in the array
const oppositeCardIndex = cardObj.findIndex(card => card.name == oppositeCardID);
if (oppositeCardIndex < 0) return; // opposite card not found
// Remove opposite card from deck
cardObj.splice(oppositeCardIndex, 1);
}
console.log("Cards before drawing:", JSON.stringify(cardObj));
console.log("Drawing card 1_Magician");
drawCard("1_Magician");
console.log("Cards after drawing:", JSON.stringify(cardObj));
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/483578.html
標籤:javascript 数组 目的 以编程方式 删除-如果
上一篇:深度復制物件值而不復制其參考
下一篇:如何正確更改陣列中物件的布林值?
