[英]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.