Underscore: Array-Funktion: val x-mal wiederholen

Erstellt am 21. Nov. 2012  ·  4Kommentare  ·  Quelle: jashkenas/underscore

vorgeschlagene Impl:

_.repeat("0",10)
// => ["0","0",... 10 times]

oder ändern Sie alternativ die Funktion _.range so, dass:

_.range(0,0,10), instead of outputting [] outputs the above.

Hier ist der Anwendungsfall:

var values = ["A","B","C"];
_.object(values)
// => {"A":undefined,"B":undefined,"C":undefined} // wonderful, as expected

Aber was ist, wenn ich jeden Wert in den Schlüssel/Wert-Paaren auf den gleichen Wert initialisieren möchte?
Dies könnte eine andere Option sein, funktioniert aber nicht:

_.object(values,"0") // provide scalar instead of array
// => {"A":undefined,"B":undefined,"C":undefined} // same as before

Dies würde funktionieren, wenn _repeat vorhanden wäre:

_.object(values,_.repeat("0",values.length))
// => {"A":"0","B":"0","C":"0"} 
change

Hilfreichster Kommentar

Anstelle einer anderen Methode könnten wir einfach _.times , um das Ergebnis jedes callback Aufrufs zurückzugeben, wie es Lo-Dash tut :

var zeros = _.times(10, function() { return 0; });
// => [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

Alle 4 Kommentare

+1 für eine Array-Wiederholungsfunktion. Ich würde _.range dafür nicht ändern, da es für Nummernkreise bestimmt ist.

Anstelle einer anderen Methode könnten wir einfach _.times , um das Ergebnis jedes callback Aufrufs zurückzugeben, wie es Lo-Dash tut :

var zeros = _.times(10, function() { return 0; });
// => [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

+1 @jdalton.

Klingt gut für mich - mach es.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

clouddueling picture clouddueling  ·  3Kommentare

githublyp picture githublyp  ·  3Kommentare

haggholm picture haggholm  ·  8Kommentare

Francefire picture Francefire  ·  5Kommentare

xiaoliwang picture xiaoliwang  ·  3Kommentare