2017-06-15 53 views
0

我從網絡服務中獲取數據並填充兩個數組根據接收到的數據,廣場值

price_table array = { 
    "10": [{ 
    "_id": "59429018ff054c0001289199", 
    "price": { 
     "original": { 
     "value": 10, 
     "currency": "EUR", 
     "_id": "59429018ff054c00012891a4" 
     }, 
     "selling": { 
     "value": 10, 
     "currency": "EUR", 
     "_id": "59429018ff054c00012891a3" 
     }, 
     "allowProposals": false, 
     "_id": "59429018ff054c00012891a2" 
    }, 
    "eventId": "b6901f78-28bf-11e7-8534-985aebe2005e", 
    "status": "ACTIVE", 
    "__v": 0 
    }], 
    "35": [{ 
     "_id": "594290216f1127741550ea22", 
     "price": { 
     "original": { 
      "value": 12, 
      "currency": "EUR", 
      "_id": "594290216f1127741550ea2d" 
     }, 
     "selling": { 
      "value": 35, 
      "currency": "EUR", 
      "_id": "594290216f1127741550ea2c" 
     }, 
     "allowProposals": false, 
     "_id": "594290216f1127741550ea2b" 
     }, 
     "eventId": "b6901f78-28bf-11e7-8534-985aebe2005e", 
     "status": "ACTIVE", 
     "__v": 0 
    }, 
    { 
     "_id": "5942b36144d9f2cc788545e2", 
     "price": { 
     "original": { 
      "value": 34, 
      "currency": "EUR", 
      "_id": "5942b36144d9f2cc788545ed" 
     }, 
     "selling": { 
      "value": 35, 
      "currency": "EUR", 
      "_id": "5942b36144d9f2cc788545ec" 
     }, 
     "allowProposals": false, 
     "_id": "5942b36144d9f2cc788545eb" 
     }, 
     "eventId": "b6901f78-28bf-11e7-8534-985aebe2005e", 
     "status": "ACTIVE", 
     "__v": 0 
    } 
    ] 
} 
for (let price in price_table) { 
    if (price_table.hasOwnProperty(price)) { 
    ticketPrice.push(price.toString()); 
    ticketPriceData.push(price_table[price].length); 
    } 
} 

這將產生兩個數組如下,

ticketPrice = ['10','13']; 
ticketPriceData = [1,2]; 

現在我正在生成具有缺失值的ticketPrice數組,其中mintocal爲10,maxtocal爲13

while (mintocal < maxtocal) { 
    if (ticketPrice.indexOf(mintocal.toString()) === -1) { 
    ticketPrice.push(mintocal.toString()); 
    ticketPriceData.push(0); 
    } 
    mintocal++; 
} 

這會生成數組

ticketPrice陣列

["10","13","11","12"] 

和ticketPriceData作爲

[1,2,0,0] 

我真正想要的是

產出預期:

ticketPrice: 「10」, 「11」, 「12」, 「13」]

ticketPriceData:[1,0,0,2]

+0

您可以提供網頁數據從服務 – Rick

+0

其龐大的數據進來的時候,我已經儘量減少了,可能是你可以使用我張貼以上 –

+0

相同的數據,我相信這是一個xy問題。如果你可以提供一個小輸入+輸出,我很好的找到一個更優雅的解決方案... –

回答

0

你想要做什麼創建一個新的數組,因爲你擁有的數組已經填充了值。你需要做的是:

var ticketPrice = []; 
var ticketPriceData = []; 

while (mintocal < maxtocal) { 
    var index = ticketPrice.indexOf(mintocal.toString()); 

    newTicketPrice.push(mintocal.toString()); 
    newTicketPriceData.push((index === -1) ? 0 : ticketPriceData[index]); 

    mintocal++; 
} 

我們這裏做的是推動ticketPriceData值,如果它存在於原始數組中,如果不爲0


在您的解決方案

數組['10','13']是推「11」導致['10', '13', '11']然後推'12'導致['10','13','11', '12']

如果您想您的解決方案,而無需創建一個新的數組工作,你可以從兩個數組刪除值當你看到它,並在最後重新插入它。這會做這樣的:

while (mintocal < maxtocal) { 
    var i = ticketPrice.indexOf(mintocal.toString()); 
    if (i === -1) { 
    ticketPrice.push(mintocal.toString()); 
    ticketPriceData.push(0); 
    } else { 
    var value = ticketPrice.splice(i,1); 
    var data = ticketPriceData.splice(i,1); 
    ticketPrice.push(value); 
    ticketPrice.push(data); 
    } 
    mintocal++; 
}