我想保存并将每次点击数据添加到数组中。我试过这个
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 = '';
});
第一次保存有效,但之后我只添加了空数组。有什么指针吗?
答案 0 :(得分:3)
这是因为你用字符串替换了数组。
data = '';
您应该用新的数组替换它。
data = [];
或者通过向data
添加data
的浅表副本,然后清除save
来重复使用data
数组。
save[s++] = data.slice();
data.length = i = 0;
这允许任何其他引用data
的代码保留其引用,以便始终查看正在更新的data
。
答案 1 :(得分:1)
您可能想尝试制作数据数据的副本:
save[s++] = data.slice(0);
这样,数据数组发生的任何事情都不会影响保存数组的项目。
答案 2 :(得分: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 = [];
});
答案 3 :(得分:0)
您可以使用:
data[data.length] = <some value>;
答案 4 :(得分: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>