2013-11-21 1 views
0

У меня есть следующие JavaScript ObjectJavascript - цикл по количеству времени, основанной на переменной Qty

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

Я хочу, чтобы иметь возможность проходного объекта и вывод URL с помощью console.log() на основе переменная qty.

Таким образом, в данном случае domain.com/abc будет отображаться один раз & myurl.com/cde будет отображаться в два раза, как кол-во установлен значении 2.

У меня есть что-то вроде следующего, но требует доработок ..

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

Вот как можно реализовать String.repeat в JS:

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

... так что в вашем случае это будет просто ...

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

Unary plus - это ярлык для Number(value.qty): похоже, что у вас там есть строка.


Но, похоже, вы на самом деле нужно собрать все URLs вместо этого. Это один из возможных способов сделать это:

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

Альтернатива (.reduce основы):

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

Я думаю, я, возможно, объяснил немного странно ... В основном каждый url войдет в массив. Итак, в этом случае - у меня будет три URL (с двумя одинаковыми). Надеюсь, что имеет смысл – Zabs

+0

Извините, но это не делает проблему более ясной. Что означает «перейти в массив»? Просто 'someArray.push (someUrl)'? Если это так, вы можете просто повторно использовать второй фрагмент (заменив 'console.log' на строку' someArray.push'). – raina77ow

+0

извините .. yeh каждый url будет помещен в массив .. так что окончательный массив будет выглядеть как массив ('URL1', 'URL2', 'URL2') Извините - Надеюсь, что имеет смысл :) – Zabs

Смежные вопросы