jquery在数组中保存数据

时间:2013-01-07 21:55:11

标签: javascript jquery

我想保存并将每次点击数据添加到数组中。我试过这个

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 = '';
});

第一次保存有效,但之后我只添加了空数组。有什么指针吗?

5 个答案:

答案 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>