如何从数组

时间:2016-05-12 08:50:09

标签: javascript jquery html arrays object

  1. 需要将输入值转换为数组类型[[X,Y,Z],[A,B,C]]
  2. 我想在点击时从数组中删除项目。
  3. 
    
    $(".btn-primary").click(function () {
      var nbrOfList = 2; // number of item went to remove
      var _data1 = $('#listAllEmp').val(); // default value
      var _data2 = eval("[" + _data1 + "]"); // convert as array
    
      var itemtoRemove = _data2[nbrOfList-1]; // itemtoRemove from array
      _data2.splice($.inArray(itemtoRemove ,_data2),1); // Remove from array
    
    
      jQuery('#listAllEmp').val('[' + _data2 + ']'); // new value after remove
      $('p').text('[' + _data2 + ']')
      
    });
    
    <input type="hidden" name="" id="listAllEmp" value='["job name 1","nat 1"],["job name 2","nat 2"],["job name 3","nat 3"]' />
    
    <a title="" class="btn btn-primary" href="javascript:void(0);">remove 2 item</a>
    <p></p>
    &#13;
    &#13;
    &#13;

3 个答案:

答案 0 :(得分:0)

使用JSON.stringify

   jQuery('#listAllEmp').val(JSON.stringify(_data2));
      $('p').text(JSON.stringify(_data2))

JSON.parse而不是eval(使用eval不是一个好习惯)

JSON.parse('[["job name 1","nat 1"],["job name 2","nat 2"],["job name 3","nat 3"]]')

答案 1 :(得分:0)

用于数组转换的输入值的简单且正确的正则表达式解决方案。然后在删除或插入一个简单的地图实现之后,将值返回到要插入DOM元素的字符串中。

因此,一旦拥有此数组,您就可以通过事件侦听器删除或添加项目,并将其插回到元素的value属性中。好的,我们假设我们要删除索引1处的项目。请参阅以下代码

&#13;
&#13;
var _data1 = '["job name 1","nat 1"],["job name 2","nat 2"],["job name 3","nat 3"]',
       reg = /([^"]+)","([^"]+)/g,
    _data2 = [];

while(_data2[_data2.length]=reg.exec(_data1));
_data2 = _data2.slice(0,-1).map(c => c.slice(1,3)); // now we have our array in _data2

document.write("<pre>" + JSON.stringify(_data2) + "</pre>\n");

_data2.splice(1,1); // item at index 1 is removed from _data2
_data1 = _data2.map(e => "[" + e + "]").join(","); // _data1 is ready to be sent to value

document.write("<pre>" + JSON.stringify(_data1) + "</pre>\n");
&#13;
&#13;
&#13;

答案 2 :(得分:0)

从数组中删除项目您可以执行以下操作:

var y = [1, 2, 2, 3, 2]
var removeItem = 2;

y = jQuery.grep(y, function(value) {
  return value != removeItem;
});

结果:

[1, 3]