优化Javascript方法以填充或清空数组

时间:2013-01-11 14:42:53

标签: javascript jquery arrays optimization

我想知道是否有更好的方法来向数组中添加/删除复选框值。遗憾的是我无法使用ECMAScript 5 indexOf(),因为我需要支持IE8 / 7。

这是一个有效的jsfiddle示例:http://jsfiddle.net/puyQr/

此方法的作用是:

/**
 * If a user clicks onto the checkbox, the value of the value attribute is
 * only added to the array when the value not yet exists. However, if
 * the value already exists, the value is removed.
 */

var values = [];
jQuery(':checkbox').on('click', function(){     
    var index = jQuery.inArray(this.value, values);
    if(index === -1) {
        values.push(this.value);
    } else {
        values.splice(index, 1);
    }
});

2 个答案:

答案 0 :(得分:2)

从复选框获取值的另一种方法是:

var values = jQuery(':checkbox:checked').map(function(){
    return $(this).val();
}).get();

demo

答案 1 :(得分:2)

是的,使用对象文字。

var values = {};
jQuery(':checkbox').on('click', function () {     
    if (this.value in values && values[this.value] === 1) {
        values[this.value] = 0;
    } else {
        values[this.value] = 1;
    }
});

请参阅here

如果您以后想要它作为数组,转换它是一件简单的事情,使用for..in并检查1之前保留