如何使用javascript删除数组中的项?

时间:2013-10-15 22:12:24

标签: javascript jquery arrays

这是html:

<button id="btn1">CLICK 1</button>
<button id="btn2">CLICK 2</button>
<div id="show"></div>

这是javascript:

product_id = new Array();
$("#btn").on('click', function () {
    $("#show").append("<div><button type='button' id='btn1x' class='close pull-right' aria-hidden='true'>&times;</button>" + "<pre>button 1</pre></div>");

    product_id.push("btn1");
    alert(product_id);
});

$(document).on('click', 'button#btn1x', function () {
    $(this).parent().remove();
    alert(product_id);
    //when I click this button, i want to remove the "btn1" that I pushed a while ago from my array 
});


$("#btn2").on('click', function () {
    $("#show").append("<div><button type='button' id='btn2x' class='close pull-right' aria-hidden='true'>&times;</button>" + "<pre>button 2</pre></div>");

    product_id.push("btn2");

});

$(document).on('click', 'button#btn2x', function () {
    $(this).parent().remove();
    //when I click this button, i want to remove the "btn2" that I pushed a while ago from my array 
});

我想单击按钮,最终会在我创建的数组中插入某个值。但是,我还创建了一个关闭按钮,当我单击它时,我想从数组中删除插入的值。

4 个答案:

答案 0 :(得分:0)

使用.pop(),jQuery中提供了所有常规的javascript函数 http://learn.jquery.com/javascript-101/arrays/

给定一个数组:

var array = [1,2,3,5];
array.push(9); // [1,2,3,5,9]
array.pop(); // [1,2,3,5]

现在,如果你想删除2 ......那就不同了。

答案 1 :(得分:0)

我猜你正在寻找这样的功能:

removeProduct = function(item) {
    var n = product_id.indexOf(item);
    if(n >= 0)
        product_id.splice(n, 1);
}

http://jsfiddle.net/PC2JS/

答案 2 :(得分:0)

当我想跟踪异步上传时,我有一个类似的问题,当元素上传完成时,我会删除哪个进度条。这可能不是您正在寻找的,但它可能会向您发送正确的方向。你可以尝试一种类似下面的字典方法:

var arr = []

添加到数组看起来像

arr[uid] = value;
console.log(arr);

然后,如果你想从数组中删除

delete arr[uid];

如果您想要迭代,可以这样做:

for (var key in arr) { 
    value = arr[key];
    console.log(value); 
}

答案 3 :(得分:0)

<强> HTML:

<button id="btn1" class="adder">CLICK 1</button>
<button id="btn2" class="adder">CLICK 2</button>
<div id="show"></div>

<强>的javascript:

$('button.adder').on('click',

function () {
    var aid = $(this).attr('id');

    $('#show').append('<div><button class="removable" style="height: 30px;">' + aid + '</button></div>');

});

$('div#show').on('click', 'div button.removable',

function () {
    //console.log(this);
    $(this).remove();

    console.log($('div#show').children());
});

如果你想要这种行为,你可以做这样的事情。如果您需要其他地方的信息(并且不关心性能),您可以使用 $('div#show')。children()来获取当前列表。

http://jsfiddle.net/eWtNN/8/上进行了测试,但确实有效。

或者,如果您担心数组列表行为,可以使用 array.pop(n)删除特定索引,例如数组。 pop(0)将从数组中删除第一个项。或 array.pop(2)删除第三个​​项。同样,这并不关注绩效。