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

这是因为您将 Array 替换为字符串。

data = '';

您应该用新的 Array 替换它。

data = [];

data或者通过添加 to 的浅拷贝data来重用Array 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

你可以使用这个:

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

如果您尝试将数据的当前内容添加到保存中的单个元素,请使用Array.push

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

...或者如果您希望将当前值data添加到save,请使用Array.concat,重置data回空数组:

$('#someelement').click(function(){
    save = save.concat(data);
    console.log(save); // for debugging
    data = [];
});
于 2013-01-07T21:57:13.800 回答
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 回答