簡體   English   中英

使用jQuery從數組中刪除特定值之后的所有值

[英]Remove all values after specific one from array with jquery

考慮到轉換為數組的一周中的某天的列表,單擊該數組便可以從數組中提取其中的任何值。 但是,我找不到有關如何刪除數組中單擊的值之后的所有值的任何信息:

  • 例如,當點擊ID為friday li時,刪除#saturday#sunday

如果您知道該怎么做,請告訴我,並提前感謝大家的時間和關注。

HTML:

<ul>
  <li id="monday">Monday</li>
  <li id="tuesday">Tuesday</li>
  <li id="wednesday">Wednesday</li>
  <li id="thursday">Thursday</li>
  <li id="friday">Friday</li>
  <li id="saturday">Saturday</li>
  <li id="sunday">Sunday</li>
</ul>

jQuery的:

var floorIds = new Array('#monday', '#tuesday', '#wednesday', '#thursday', '#friday', '#saturday', '#sunday');

$('ul li').on('click', function() {
  var which = $(this).attr('id');
  var newFloorIds = floorIds;
  var floorPos = newFloorIds.indexOf('#'+floorId);
  newFloorIds.length  = floorPos + 1;
  console.log(newFloorIds, floorIds);
});

您可以在數組中找到元素的位置:

var elementPosition = floorIds.indexOf('#'+$(this).attr('id'));

然后將數組長度設置為index + 1

floorIds.length  = elementPosition + 1; //as index are zero based

 $('ul li').on('click', function() { var floorIds = new Array('#monday', '#tuesday', '#wednesday', '#thursday', '#friday', '#saturday', '#sunday'); var elementPosition = floorIds.indexOf('#'+$(this).attr('id')); floorIds.length = elementPosition + 1; console.log(floorIds) }); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <ul> <li id="monday">Monday</li> <li id="tuesday">Tuesday</li> <li id="wednesday">Wednesday</li> <li id="thursday">Thursday</li> <li id="friday">Friday</li> <li id="saturday">Saturday</li> <li id="sunday">Sunday</li> </ul> 

您可以簡單地嘗試jQuery Documentation的 .nextAll()函數。

$('#friday').nextAll('li').remove();

您可以使用splice從數組中刪除元素范圍。

以下是相同的代碼段:

var floorIds = new Array('#monday', '#tuesday', '#wednesday', '#thursday',  '#friday', '#saturday', '#sunday');

$('ul li').on('click', function() {
   var which = $(this).attr('id');
   var index = floorIds.indexOf('#'+which);
   var newArray = floorIds.splice(index + 1, floorIds.length - index); 
});

您可以使用indexOf查找值在數組中的位置,然后進行slice以除掉該索引之外的其余部分。

 var floorIds = new Array('#monday', '#tuesday', '#wednesday', '#thursday', '#friday', '#saturday', '#sunday'); $(function() { $('ul li').on('click', function() { var day = $(this).attr('id'); var newArray = floorIds.slice(0, floorIds.indexOf("#"+day)+1); console.log(newArray); }); }); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <ul> <li id="monday">Monday</li> <li id="tuesday">Tuesday</li> <li id="wednesday">Wednesday</li> <li id="thursday">Thursday</li> <li id="friday">Friday</li> <li id="saturday">Saturday</li> <li id="sunday">Sunday</li> </ul> 

在Javascript中,我們有一個子集數組的slice方法。 請在下面做

 var floorIds = new Array('#monday', '#tuesday', '#wednesday', '#thursday', '#friday', '#saturday', '#sunday');
$('ul li').on('click', function() {
 var which = $(this).attr('id);
 var index = floorIds.indexOf('#'+which); //Will give the index of Element
var newArray = floorIds.slice(0, index); // Slice will provide the subset array of given indexs
});
$(document).on('click','ul li',function(){
  var array = ['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'];
  var index = array.indexOf($(this).text());
array.length=index+1;
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM