0

cells私のコメントで説明されているように、配列を作成する必要があります。このスクリプトの何が問題なのか、この結果を達成するためのより効率的な方法を知りたいです。

jsフィドルを見てくださいhttp://jsfiddle.net/XvTrf/5/

var data = ['D-0','D-1','D-2','D-3','D-4','D-5','D-6','D-7','D-8','D-9'];

var cells=[];
var d = 0, lenD = data.length;

while(d< lenD){
    if(d === 1 || d === 5 || d ===6){
       cells.push('test');
    }else {
        cells.push(data[d]);
    }
    d++;
}
console.log(cells);


/* result wanted
D-0
test
D-1
D-2
D-3
test
test
D-4
D-5
D-6
D-7
D-8
D-9

*/
4

1 に答える 1

2

else ステートメントは、一部のエントリが入力されていないことを意味します。

さらに、spliceメソッドを使用することもできます...これにより、コードが少なくなりますが、速度も低下します。

var data = ['D-0','D-1','D-2','D-3','D-4','D-5','D-6','D-7','D-8','D-9'];

var cells= data.slice(0);;
cells.splice(1, 0, "TEST");
cells.splice(5, 0, "TEST");
cells.splice(6, 0, "TEST");
console.log(cells);

alert(cells);

速度の違いを確認したい場合:

http://jsfiddle.net/DBhPB/1/

アップデート

pushより迅速な解決策は、メソッドを使用する代わりに、配列サイズを事前に割り当てることです。

var data = ['D-0', 'D-1', 'D-2', 'D-3', 'D-4', 'D-5', 'D-6', 'D-7', 'D-8', 'D-9'];

var cells = new Array(data.length + 3);

var d = 0,
    insertions = 0,
    lenD = cells.length;


while (d < lenD) {

    if (d === 1 || d === 5 || d === 6) {
        cells[d] = 'test';
        insertions++;
        d++;
    }
    else
     {
     cells[d] = data[d-insertions];
     d++;
     }    
}

alert(cells);
于 2013-09-19T11:55:23.270 に答える