繁体   English   中英

在数组中拼接数据

[英]Splice data in array

我正在研究一个关于数据映射的项目。 实现了几项检查:

  • 好的导入文件

  • 餐桌选择

  • 列的选择

  • 数据的典型

我目前正在选择列的一部分。 我在阵列中存储了这些不同的选择。 问题是,如果我想删除数组中的一个选项,则删除所有数据! 我正在使用这个插件: http//wenzhixin.net.cn/p/multiple-select/docs/

 var choiceFields = []; $('#selectFields').multipleSelect({ filter: true, onClick: function(view) { choiceFields.push(view.value); var length = choiceFields.length-1; if(view.checked === false) { choiceFields.splice(view.value); } console.log(choiceFields); } }); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <link href="https://rawgit.com/wenzhixin/multiple-select/master/multiple-select.css" rel="stylesheet"/> <script src="https://rawgit.com/wenzhixin/multiple-select/master/multiple-select.js"></script> <div class="select-box"> <label for="selectFields"><span class="label-FieldChoice">Choice fields</span> </label> <select id="selectFields" multiple="multiple" style="display: none;"> <option value="id">id</option> <option value="username">username</option> <option value="username_canonical">username_canonical</option> <option value="email">email</option> <option value="email_canonical">email_canonical</option> <option value="enabled">enabled</option> <option value="salt">salt</option> <option value="password">password</option> <option value="last_login">last_login</option> <option value="confirmation_token">confirmation_token</option> <option value="password_requested_at">password_requested_at</option> <option value="roles">roles</option> <option value="lastName">lastName</option> <option value="firstName">firstName</option> </select> </div> 

你可以这样做:

var choiceFields = [];
$('#selectFields').multipleSelect({
  filter: true,
  onClick: function(view) {
    choiceFields.push(view.value);
    var length = choiceFields.length - 1;
    if (view.checked === false) {
      choiceFields = jQuery.grep(choiceFields, function(value) {
        return value != view.value;
      });
    }
    console.log(choiceFields);
  }
});

我改变了:

choiceFields.splice(view.value);

至:

choiceFields = jQuery.grep(choiceFields, function(value) {
  return value != view.value;
});

演示

 var choiceFields = []; $('#selectFields').multipleSelect({ filter: true, onClick: function(view) { choiceFields.push(view.value); var length = choiceFields.length - 1; if (view.checked === false) { choiceFields = jQuery.grep(choiceFields, function(value) { return value != view.value; }); } console.log(choiceFields); } }); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <link href="https://rawgit.com/wenzhixin/multiple-select/master/multiple-select.css" rel="stylesheet" /> <script src="https://rawgit.com/wenzhixin/multiple-select/master/multiple-select.js"></script> <div class="select-box"> <label for="selectFields"><span class="label-FieldChoice">Choice fields</span> </label> <select id="selectFields" multiple="multiple" style="display: none;"> <option value="id">id</option> <option value="username">username</option> <option value="username_canonical">username_canonical</option> <option value="email">email</option> <option value="email_canonical">email_canonical</option> <option value="enabled">enabled</option> <option value="salt">salt</option> <option value="password">password</option> <option value="last_login">last_login</option> <option value="confirmation_token">confirmation_token</option> <option value="password_requested_at">password_requested_at</option> <option value="roles">roles</option> <option value="lastName">lastName</option> <option value="firstName">firstName</option> </select> </div> 

Array.splice()它需要3个参数array.splice(index, howMany, [element1][, ..., elementN])

index - 开始更改数组的索引。

howMany - 一个整数,指示要删除的旧数组元素的数量。 如果howMany为0,则不删除任何元素。

element1,...,elementN - 要添加到数组的元素。 如果未指定任何元素,则splice只是从数组中删除元素。

但是您没有提供答案中的howMany参数提供此值以从数组中删除特定索引

前 -

 var choiceFields = []; $('#selectFields').multipleSelect({ filter: true, onClick: function(view) { var length = choiceFields.length-1; if(view.checked === false) { var index = choiceFields.indexOf(view.value); // Finding Index of Item choiceFields.splice(index,1); // Splicing one element from index } else{ choiceFields.push(view.value); // if false we do not push value } console.log(choiceFields); }, onCheckAll: function() { choiceFields = []; // delete all previous values var options = document.getElementById('selectFields'); for(var i=0;i<options.length;i++){ choiceFields.push(options[i].text); } console.log(choiceFields); } }); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <link href="https://rawgit.com/wenzhixin/multiple-select/master/multiple-select.css" rel="stylesheet"/> <script src="https://rawgit.com/wenzhixin/multiple-select/master/multiple-select.js"></script> <div class="select-box"> <label for="selectFields"><span class="label-FieldChoice">Choice fields</span> </label> <select id="selectFields" multiple="multiple" style="display: none;"> <option value="id">id</option> <option value="username">username</option> <option value="username_canonical">username_canonical</option> <option value="email">email</option> <option value="email_canonical">email_canonical</option> <option value="enabled">enabled</option> <option value="salt">salt</option> <option value="password">password</option> <option value="last_login">last_login</option> <option value="confirmation_token">confirmation_token</option> <option value="password_requested_at">password_requested_at</option> <option value="roles">roles</option> <option value="lastName">lastName</option> <option value="firstName">firstName</option> </select> </div> 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM