2016-09-30 27 views
1

我有像一些參數的URL這一個: http://localhost:9000/#/checkout/?title1=Sodadrink&quantity1=2&price1=129.95&title2=PolaryteGlasses&quantity2=1&price2=59.95#%2FAngularJS如何組/組織的目標項目,以顯示他們在視圖

,我讓他們與$location.search(),剛剛返回他們罰款喜歡的對象:

Object 
    price1: "129.95" 
    price2: "59.95" 
    quantity1: "2" 
    quantity2: "1" 
    title1: "Sodastream" 
    title2: "Polaryte – Óculos de Sol" 
    __proto__: Object 

這是很酷,但現在我需要像組每個項目:

[item] 
    title : Sodastream 
    price : 129.95 
    quantity : 1 
[item] 
    title : --- 
    price : --- 
    quantity : --- 

我被困在T他的部分,我已經計算了對象內的所有項目,6,並且他們通過創建一個新的對象將它們分組爲3,但是沒有成功。 你能幫我嗎?謝謝。

回答

1

由於在URL項目的數目可以變化,最好是不硬編碼任何數。爲此,我還假設每個項目都有3個屬性 - 標題,價格和數量。

試試這個:

var numOfItems = Object.keys(input).length/3; // for example, 6 properties will mean 2 items 
var output = []; 
for (var i = 1; i <= numOfItems; i++) { 
    if (input["title"+i]) { 
    output.push({title: input["title"+i], price: input["price"+i],quantity: input["quantity"+i]}) 
    } 
} 

輸出數組應該包含在您指定的確切方式的對象。

+0

感謝您的快速回答,事實證明我正在考慮正確的方式,就像您和Mike的解決方案。我這樣計算內部物品: $ scope.basket = []; var items = $ location.search(); var count = 0; for(var k in items){ if(items.hasOwnProperty(k)){ ++ count; } } 其中計數將返回6號碼。然後我做了一個循環: for(var i = 1; i

+0

我只是改變了你的代碼,因爲(var i = 1; i <= numOfItems; i ++) 在<運算符爲<=時,否則它只會將索引1推送到Output數組。 謝謝;) –

+0

感謝您指出。乾杯。 –

1

你將不得不寫一點JavaScript來做到這一點。

假定從上方的對象被稱爲輸入

const MAX_ITEMS=9; 
var outputs = []; 
for (var i=1,i<MAX_ITEMS;i++) { 
    if (inputs["item"+i]) { 
     outputs.push({item: inputs["item"+i], price: inputs["price"+i],quantity: inputs["quantity"+i]}) 
    } 
} 

你的數據將是在輸出可變

+0

這基本上是你回答麥克,謝謝! ;) –