2013-11-21 62 views
0

我具有基於下面的JavaScript對象使用Javascript - 通過次數環基於

[Object { url="http://domain.com/abc", qty="1" }, Object { url="http://myurl.com/cde", qty="2" }] 

我希望能夠通過對象和輸出的使用URL的console.log(循環)數量變量數量變量。

所以在這種情況下domain.com/abc將顯示一旦&的數量設置爲2

的myurl.com/cde將顯示兩次我有類似以下,但需要一些工作..

cart.forEach(function(value) { 
    var qty = value.qty; 
    var url = value.url; 
    var i = 0; 

    while (i < qty) { 
    // logic needed here (i believe) 
    i++; 
    } 
} 
+1

究竟你「輸出的URL」是什麼意思? – Vatev

+0

對不起我的錯 - 只是console.log(url); – Zabs

回答

1

這是一個如何在JS實現String.repeat:

var repeatedString = Array(repeatsCount + 1).join(stringToRepeat); 

...所以在你的情況下,它會只是......

console.log(Array(+value.qty + 1).join(value.url)); 

Unary plus是Number(value.qty)的快捷方式:它看起來像是在那裏有一個字符串。


但它看起來你真正需要收集所有的URL來代替。這是一個可能的方式做到這一點:

var arrayOfUrls = []; 
cart.forEach(function(value) { 
    for (var i = value.qty; i--) { 
    arrayOfUrls.push(value.url); 
    } 
}); 

替代(。降低爲基礎):

var arrayOfUrls = cart.reduce(function(arr, value) { 
    for (var i = value.qty; i--) { 
    arr.push(value.url); 
    } 
    return arr; 
}, []); 
+0

我想我可能已經解釋了一些奇怪的...基本上每個網址都會進入一個數組。所以在這個例子中 - 我有三個URL(兩個是相同的)。希望有道理 – Zabs

+0

對不起,但它不會使問題更清楚。 '進入數組'意味着什麼?只是'someArray.push(someUrl)'?如果是這樣,你可以重新使用第二個片段(用'someArray.push'行替換'console.log')。 – raina77ow

+0

對不起.. yeh每個網址都會被推入一個數組中..所以最終的數組看起來像 array('URL1','URL2','URL2') 對不起 - 希望有道理:) – Zabs