簡體   English   中英

如何從 Json 數組中獲取兩個選定對象之間的對象?

[英]How to get objects in between two selected objects from Json array?

var allUsers = [{id:1},{id:2},{id:3},{id:4},{id:5}]
var  selectedUsers = [{id:1},{id:4}]

我該如何退貨?

var remainingUsers = [{id:1},{id:2},{id:3},{id:4}]

希望這對你有用

 var allUsers = [{ id: 1 }, { id: 2 }, { id: 3 }, { id: 4 }, { id: 5 }] var selectedUsers = [{ id: 4 }, { id: 1 }] function compare(a, b) { let comparison = 0; if (a.id > b.id) { comparison = 1; } else if (a.id < b.id) { comparison = -1; } return comparison; } selectedUsers = selectedUsers.sort(compare) var remainingUsers = allUsers.slice(allUsers.findIndex(x => x.id == selectedUsers[0]['id']), allUsers.findIndex(x => x.id == selectedUsers[1]['id']) + 1) console.log(remainingUsers);

你可以使用這種方法

var allUsers = [{id:1},{id:2},{id:3},{id:4},{id:5}]
var  selectedUsers = [{id:1},{id:4}]
function getRemaining(allUsers, selectedUsers){
  var rem = [];
var start = false; 
var stop = false;
allUsers.map((x)=>{

  if(x.id == selectedUsers[0].id){ start = true;  rem.push(x) }
  if(x.id == selectedUsers[1].id){ stop = true;  rem.push(x) }
  if(start && !stop){
    rem.push(x)
  }
})
 return rem
}
getRemaining(allUsers, selectedUsers)
var remainingUsers = allUsers.slice(allUsers.findIndex(x=>x.id == selectedUsers[0].id),allUsers.findIndex(x=>x.id == selectedUsers[1].id)+1)

您可以使用切片。

 var allUsers = [{id:1},{id:2},{id:3},{id:4},{id:5}] var selectedUsers = [{id:1},{id:4}] var remainingUsers = allUsers.slice(allUsers.findIndex(x=>x.id == selectedUsers[0].id),allUsers.findIndex(x=>x.id == selectedUsers[1].id)+1) console.log(remainingUsers);

我試圖以你給定的價值觀為例。 請看一看。

 var alluser = [{id:1},{id:2},{id:3},{id:4},{id:5}]; var selected = [{id:1},{id:4}]; var left_users = new Array(); function check_matchuser(ref_id){ var count = 0; $(selected).each(function(key, value){ if(value.id==ref_id){ count++; } }); if(count>0){ return false; }else{ return true; } }//end of check $(alluser).each(function(key, usersvalue){ var check_status = check_matchuser(usersvalue.id); if(check_status){ var temp_data = {'id': usersvalue.id}; left_users.push(temp_data); } }); console.log(left_users);
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

很抱歉我的英文不是很好,也許你可以獲取開始和結束下標,然后使用 splice() 方法。

 var allUsers = [{id:1},{id:2},{id:3},{id:4},{id:5}] var selectedUsers = [{id:1},{id:4}] function getBetweens(allUsers,selectedUsers){ var start = allUsers.findIndex((item)=>{ return JSON.stringify(item)==JSON.stringify(selectedUsers[0]) }) var end = allUsers.findIndex((item)=>{ return JSON.stringify(item)==JSON.stringify(selectedUsers[1]) }) betweenArray = allUsers.splice(start,end+1) return betweenArray } console.log(getBetweens(allUsers,selectedUsers),'gets')

暫無
暫無

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

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