1

次の例では、JS で splice メソッドを使用して、さまざまな結果が得られます。

var test = function(x){  
    var f = x.toString().length;
    var bb = [];
    for (i=0;i<f;i++){bb.push('a');}
    console.log(bb);
    for (i=bb.length; i>-1; i=i-3){bb.splice(Number((i-2)),1,'b');}
    console.log(bb);    
};              
test (412289847863);

入力数値の長さが 4、7、10、13 などの場合、「bb」の最後の要素が「b」に変わり、その理由がわかりません。私が見ているように、それは常に「a」でなければなりません。なぜそうではないのですか?

4

1 に答える 1

0

あなたのコメントによると、このコードを試すことができます。必要なループは 1 つだけであり、スプライスは非常にコストがかかり、一度に 1 つの要素だけを交換する場合は必要ないため、避ける必要があります。

function test(a){
    var l = a.toString().length;
    var bb = [];
    for (var i = l;i>0;i-=1){
        bb[i-1] = ((l-i+2)%3!=0)?"a":"b";
    }
    console.log(bb);
}

test(1343332);
于 2013-04-12T15:13:49.630 に答える