new string('-', 20) в JavaScript?


2
Здравейте.
Има ли възможност new string('-', 20) от C# да се направи в JavaScript? Търсих в Google и не можах да намеря. Предположението ми е, че не може, но реших да питам все пак.
За да не ми го предложи някой, знам че може да се направи с цикъл, питам дали има съкратен запис.
Поздрави! :)



Отговори



7
Няма, трябва да си го напишеш...
Може да стане var string = String.repeat('-', 20) или '-'.repeat(20)

от DonchoMinkov (12706 точки)


0
(function () { if (!String.prototype.repeat) { String.prototype.repeat = function (count) { var str = ''; for (var i = 0; i < count; i += 1) { str += String(this); } return str; }; } }());
var repeated = '-'.repeat(50)

от DonchoMinkov (12706 точки)

0
А защо, ако директно се създаде repeat, без да се проверки предварително за съществуването му, не работи?
Edit: Работи си, оправих си грешката. :)




0
Това е едно от нещата поради които харесвам javascript. Ако липсва някой метод на някой клас просто се записва на прототипа. Типичен пример е метода trim() който го няма в IE8 например но след 3 реда и вече го има.
if(typeof String.prototype.trim !== 'function') { String.prototype.trim = function() { return this.replace(/^\s+|\s+$/g, ''); } }

от nikolap (555 точки)


1
Здравей, когато аз търсих решение на проблема с дублиране на някакъв чар в стринг намерих този линк: http://stackoverflow.com/questions/202605/repeat-string-javascript В един от постовете са направили сравнение на бързианта на всеки един от подходите.



7

Аз пък измислих "съкратен запис" на един ред, но си нямам идея колко е бързо:

new Array(20).toString().replace(/,/g, '-')


от Flystar (1171 точки)


0
Ей! това е хитро! Браво :) само трябва да е 21, не 20. Празен масив с 20 елемента прави 19 запетайки.

от DonchoMinkov (12706 точки)


6
Още един лесен начин

var array = new Array(21).join("-");

от paveld3 (17458 точки)


0
Отново трябва да е new Array(21).join('-') :)

от DonchoMinkov (12706 точки)

0
това трябва да е Best Answer :)

от wnvko (3123 точки)