如何在javascript中将相同的元素插入到数组中?

时间:2011-11-21 12:17:59

标签: javascript arrays

我有一个对象数组。但是当我插入我之前添加的对象时,它将覆盖我之前的对象。我怎么解决呢?

我有一个叫做玩家的对象。在播放器中,我有两个数组:一个名为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数组时,它将覆盖第一个元素的数据。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

这就是你add an element to an array的方法。这样就不会覆盖任何东西:

var sports = ["soccer", "baseball"];
sports.push("football", "swimming");