2011-11-21 31 views
-2

我有一個對象數組。但是當我插入我之前添加的對象時,它將覆蓋我以前的對象。我該如何解決它?如何在JavaScript中將相同的元素插入到數組中?

我有一個叫做player的對象。在玩家中,我有兩個數組:一個叫onHandWeapon,一個叫onFieldWeapon。他們是武器對象的陣列。

function player(lp){ 
     this.lp = lp; 
     this.onFieldWeapon = new Array(); 
     this.onHandWeapon = new Array(); 

    } 

function weapon(id, heart, bullet, src){ 
      this.id = id; 
      this.heart = heart; 
      this.bullet = bullet; 
      this.src = src; 
      this.location; 
      this.name; 
      this.discription; 
      this.bufferBullet = bullet; 
    } 

我已經在onHandWeapon數組中設置了三個虛擬對象。然後,我想隨機選取其中一個並將其放入onFieldWeapon中,併爲其指定一個隨機位置。

function aiCreateWeapon(){ 
     var b = Math.floor(Math.random()*ai.onHandWeapon.length); 
     $('#console').append(' ' + b + ' '); 
     var ip = 100; 

     while($('#'+ip).attr('class') != 'enemyField'){ 
      ip = Math.floor(Math.random()*48); 
     } 

     encurrentWeapon = ai.onHandWeapon[b]; 

     var source = encurrentWeapon.src; 

     var oImg = document.createElement("img"); 
     oImg.setAttribute('src', source); 
     oImg.setAttribute('height', '60px'); 
     oImg.setAttribute('width', '60px'); 
     $('#'+ip).append(oImg).show('explode','slow'); 

     encurrentWeapon.location = ip; 
     ai.onFieldWeapon.push(encurrentWeapon); 

     $('#console').append(' ' + ai.onFieldWeapon[0].location + ' '); 
} 

aiCreateWeapon是一個綁定到按鈕的函數。當我點擊它時,ai.onFieldWeapon [0] .location是一個固定位置,直到它改變。每次當與第一個元素相同的對象被添加到onFieldWeapon數組中時,它都會檢查它是否會覆蓋第一個元素的數據。

+3

請發佈您的代碼,沒有它你的問題就沒有意義了。 –

+1

沒有看到代碼就很難理解。但我想你可能使用相同的索引來保持對象。最好先備份數組,然後向其中添加新對象,然後將該備份複製到原始數組中。 – Naved

+0

encurrentWeapon是一個全局變量 – Newbie

回答

1

你應該使用拼接

http://www.w3schools.com/jsref/jsref_splice.asp

<script type="text/javascript"> 

var fruits = ["Banana", "Orange", "Apple", "Mango"]; 
document.write("Added: " + fruits.splice(2,0,"Lemon") + "<br />"); 
document.write(fruits); 

</script> 

Added: 
Banana,Orange,Lemon,Apple,Mango 
+2

[不要使用](http://w3fools.com)w3schools作爲參考。它不僅與w3c無關,而且我們也有像MDN這樣的適當引用來代替。另外,您的示例使用document.write(eeew!) – hugomg

+0

其來自w3schools的示例。 –

+1

@missingno試圖說的是,w3schools不是一個很好的資源。事實上,他們的大部分信息都是不正確的,他們的知名度很大程度上是由於他們在網絡上的悠久歷史和在搜索引擎索引中的高分。 [MDN](http://developer.mozilla.org)是一個更好的鏈接資源。 –

相關問題