2017-04-11 74 views
0

陣列指望我從一個API我想基於的幾個條件

data: { 
    "total_slots": int, 
    "occupied_count": int, 
    "occupied_slots" : [int] e.g.[452,453,459] (here each int in the array signfies an occupied slot), 
    "slots_down" : [int] e.g.[460,462] (here each int in the array signfies a down slot) 
} 

以下結果我想以下條件

VAR OCCUPIED, length of the list which are occupied minus length of common slots in occupied and slots_down 
VAR TOTAL_SLOTS = total slots (which are 31 i think) - slots which are down 
VAR AVAILABLE = (31 - length(slots_down)) - length(slots occupied AND not down) 

槽是31是固定的。

var ALL_SLOTS = [452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523]; 

我如何能滿足或/與條件像VAR AVAILABLE = (31 - length(slots_down)) - length(slots occupied AND not down)

這是我當前的代碼

s = JSON.parse(s); 
console.log(s); 
SLOTS_DOWN = s.slots_down; 
var total_slots = s.total_slots; 
SLOTS_DOWN = s.slots_down.length; 
console.log('down slots are ' + SLOTS_DOWN); 
total_slots = parseInt(total_slots) - parseInt(SLOTS_DOWN); 
var occupied = s.occupied_count; 
var available = parseInt(total_slots) - parseInt(occupied) - parseInt(SLOTS_DOWN); 
+0

是什麼'slots_down'? –

+0

也需要一組slots_down。 – dev8080

+0

與你的代表的用戶應該知道共享代碼 – Rajesh

回答

2

根據這些:

VAR佔據,其佔用共同 插槽減去長度在被佔領和列表的長度slots_down VAR TOTAL_SLOTS =總的插槽(這是31我認爲) - 插槽下降 VAR AVAILABLE =(31 - 長度(slots_down)) - 長度(插槽佔用和不下來)

你可以試試這個:

var OCCUPIED = data.occupied_count - 
      data.occupied_slots.filter(function(elem){ 
             return data.slots_down.indexOf(elem)>-1; 
       }).length; 

var TOTAL_SLOTS = data.total_slots.length - data.slots_down.length; 


var AVAILABLE = ((data.total_slots.length - data.slots_down.length)) - 
      data.occupied_slots.filter(function(elem){ 
      return data.slots_down.indexOf(elem)==-1; 
     }).length 
1

這應該工作:

data = { 
 
     "total_slots": 124, 
 
     "occupied_count": 3, 
 
     "occupied_slots" : [245, 326, 256], 
 
     "slots_down" : [245, 136] 
 
    } 
 
    var down_but_not_occ = 0; 
 
    data.slots_down.map(function(v, i){ 
 
     if(data.occupied_slots.indexOf(v) === -1){ 
 
    \t    down_but_not_ocC++; 
 
     }; 
 
    }) 
 

 
    var available_slots = parseInt(data.total_slots) - data.occupied_slots.length - down_but_not_occ; 
 
    console.log(available_slots);

如果你錯了,

total_slots = parseInt(total_slots) - parseInt(SLOTS_DOWN); // slots down subtracted 
var occupied = s.occupied_count; 
var available = parseInt(total_slots) - parseInt(occupied) - parseInt(SLOTS_DOWN); // slots down AGAIN subtracted 
+0

那佔用和總插槽呢? –

+0

@AliZia現在這應該工作 –