在数组中使用Javascript存储键和值

在数组中使用Javascript存储键和值,javascript,arrays,Javascript,Arrays,我有一个jsp页面,表是动态出现的,当您单击该页面上的复选框时,它应该保存在数组中,当它取消选中该框时,它应该从数组中删除值 我通过创建一个方法尝试了这个方法,但它并不完美。你能帮我吗 function addCheckboxVAlues(checked){ var split = checked.value.split("|"); var key =split[0]; var value=split[1]; var chks = $("input[name='"

我有一个jsp页面,表是动态出现的,当您单击该页面上的复选框时,它应该保存在数组中,当它取消选中该框时,它应该从数组中删除值

我通过创建一个方法尝试了这个方法,但它并不完美。你能帮我吗

function addCheckboxVAlues(checked){
    var split = checked.value.split("|");
    var key =split[0];
    var value=split[1];
    var chks = $("input[name='"+key+"']:checked");
      if (chks.length > 0)  {
         uninvoiced.push(value);
      } else {
         uninvoiced.pop(key);
      }
      console.log(uninvoiced);
}

需要使用“拼接”从阵列中删除图元

function addCheckboxVAlues(checked){
    var split = checked.value.split("|");
    var key =split[0];
    var value=split[1];
    var chks = $("input[name='"+key+"']:checked");
    var index = uninvoiced.indexOf(key);
      if (chks.length > 0)  {
         uninvoiced.push(value);
      } else if(index > -1){
         uninvoiced.splice(index, 1);
      }
      console.log(uninvoiced);
}

这段代码看起来比它需要的复杂得多。假设复选框上有一个点击监听器,所以应该像这样使用复选框调用它。如果选中该复选框,则只需添加值;如果未选中,则将其删除

这将比每次运行选中的选择器效率更高

为了方便起见,下面使用了一个内联侦听器,就像动态地附加它们一样,但它的调用方式似乎是相同的

var uninvoiced=[];
函数addCheckbox(el){
var value=el.value.split(“|”)[1];
如果(标高已勾选){
未发音。推送(值);
}否则{
未发音的拼接(未发音的索引of(值),1);
}
console.log(未发音);
}
foo | bar:

费用| fum:
无音.pop(键)-数组pop方法删除数组的最后一个元素-查看其他方法以查找和删除数组中的元素-或使用对象替代对象对象不支持属性或方法'indexOf'Uninvoiced是一个数组,我们是否为数组使用indexOf方法。。?我们在JavaScript中没有map?数组有原型方法indexOf。您可以查看与数组关联的原型方法的完整列表,请注意,
ie您可以多填充indexOf方法以使其在所有浏览器版本中都能工作感谢您的回复RobG。。。这是完美的工作。。。你能告诉我如何根据这个值得到单位的价值吗。。。控件可能位于窗体中,窗体控件通过其窗体属性引用窗体。表单按名称引用了其所有控件,因此在函数中可以执行
el.form.units.value
。如果有多个控件的名称为单位,则按名称引用它们将返回一个集合,要获取第一个控件的值,请使用
el.form.units[0].value
,以此类推。@RobG谢谢您的帮助,我也是这样做的。。现在,我可以从单击中选择结果,但如果我使用多次单击,则此代码不起作用。它适合我。它只包括选中的值,任何未选中的值都将被删除,无论我单击每个值多少次。如何使用java脚本将24、23、25等值拆分为a=24、b=25、c=23。。。。因为javascript有一个名为split的函数,但它添加逗号而不是删除。。。。