0

すべてのクリックデータを保存して配列に追加したいと思います。私はこれを試しました

var data = [];
var save = [];
s=0;
i=0;

some called function(){
  data[i++] = some result;
  data[i++] = some other result;
}

$('#someelement').click(function(){
save[s++] = data;
console.log(save); // for debugging
i = 0;
data = '';
});

最初の保存は機能しますが、その後は空の配列を追加しました。ポインタはありますか?

4

5 に答える 5

3

これは、配列を文字列に置き換えているためです。

data = '';

代わりに、新しいアレイに置き換える必要があります。

data = [];

またはdata、の浅いコピーをに追加してdataからsave、をクリアして、アレイを再利用しdataます。

save[s++] = data.slice();

data.length = i = 0;

これにより、への参照を持つ他のコードはその参照を保持できるため、更新されているコードをdata常に表示できます。data

于 2013-01-07T21:57:59.320 に答える
1

データ配列のコピーを作成してみてください。

save[s++] = data.slice(0);

このように、データ配列に何が起こっても、保存配列の項目には影響しません。

于 2013-01-07T22:07:16.593 に答える
0

保存時にデータの現在の内容を単一の要素に追加しようとしている場合は、Array.pushを使用します。

$('#someelement').click(function(){
    save.push(data);
    console.log(save); // for debugging
    i = 0;
    data = [];
});

...または、現在の値をdata追加する場合は、 Array.concatsaveを使用して、空の配列にリセットします。data

$('#someelement').click(function(){
    save = save.concat(data);
    console.log(save); // for debugging
    data = [];
});
于 2013-01-07T21:57:13.800 に答える
0

あなたはこれを使うことができます:

data[data.length] = <some value>;
于 2013-01-07T21:58:10.487 に答える
0

[]を使用して新しいアレイを作成する必要があります。

実例は次のとおりです。

<script>
   var data = [];
   var save = [];
   s=0;
   i=0;

function addRes(){
    data[i++] = 'some result';
    data[i++] = 'some other result';
}

$('#someelement').click(function(){
    addRes();
    save[s++] = data;
    console.log(save); // for debugging
    i = 0;
    data = [];
});
</script>
于 2013-01-07T22:10:34.670 に答える