Vraag Een reeks lege tekenreeksen maken?


Is er een eenvoudige manier om een ​​reeks lege tekenreeksen te maken in javascript? Momenteel is de enige manier waarop ik kan denken om dit te doen, met een lus:

var empty = new Array(someLength);
for(var i=0;i<empty.length;i++){
    empty[i] = '';
}

maar ik vraag me af of er een manier is om dit op één regel te doen met behulp van regulier javascript of coffeescript.


15
2017-11-15 17:51


oorsprong


antwoorden:


Update: op nieuwere browsers - gebruik .fill: Array(1000).fill('') maakt een array van 1000 lege reeksen.


Ja, er is een manier:

 var n = 1000;
 Array(n).join(".").split("."); // now contains n empty strings.

Ik zou de lus waarschijnlijk wel gebruiken, het geeft de intentie duidelijker weer.

function repeat(num,whatTo){
    var arr = [];
    for(var i=0;i<num;i++){
        arr.push(whatTo);
    }
    return arr;
}

Op die manier is het volkomen duidelijk wat er wordt gedaan en kunt u het opnieuw gebruiken.


41
2017-11-15 17:53



hier is een eenvoudiger manier met behulp van generieke protocollen voor Array en String:

"".split.call(Array(1001), ",")

EDIT: Er zijn nu nog eenvoudiger manieren, waarvan sommige leesbaar zijn:

Array(1000).fill("");

" ".repeat(999).split(" ");

9
2017-11-15 18:59



U kon er een functie uit maken:

function stringArray(length) {
    var arr = [];
    for(var i = 0; i < length; ++i) { arr.push(''); }
    return arr;
}

1
2017-11-15 17:54



U kunt een array krijgen die de grootte definieert en deze met een token vullen.

var n = Array (grootte) .vulling ("");


1
2018-03-01 14:47



Je zou zoiets als dit kunnen doen:

var someLength = 10;
var empty = Array.apply(0, Array(someLength)).map(function(){return '';});
// result: ["", "", "", "", "", "", "", "", "", ""]

0
2017-11-15 17:54



Voor de lol

var empty = Array.apply(null, new Array(someLength)).map(String.prototype.valueOf,"");

0
2017-11-15 17:59



Het gemakkelijkste om te doen in CoffeeScript is om een lus bevattingsvermogen:

a = ('' for i in [0 ... someLength]) # Note: 3 dots
a = ('' for i in [1  .. someLength]) # Or 2 dots and start at 1
#...

demo: http://jsfiddle.net/ambiguous/b9Vj9/


0
2017-11-15 18:27