-3

这是一个非常奇怪的问题,我真的不知道该怎么办。

我使用 json_encode 从 MySQL 数据库中获取数组工作者然后我将它复制到另外两个我将很快进行操作的数组

var workers = <?php echo json_encode($tablica_pracownikow); ?>;
var toSort = workers;
var sort = workers;

然后我有一个函数 drawForFirst 显示工人数组

function drawForFirst(){
  for (var i=0; i<7; i++){
      $('.main_element').append(workers[i][0]);
      $('.main_element').append(workers[i][1]);
      $('.main_element').append(workers[i][2]);
      $('.main_element').append(workers[i][3]);
      $('.main_element').append(workers[i][4]);
      $('.main_element').append(workers[i][5]);
      $('.main_element').append(workers[i][6]);
}    

我对所有三个数组都有三个类似的函数。

但是,当我在其中一个数组中进行更改时,例如将一行数据更改为 0,然后我使用任何其他绘图函数,所有表都以相同的方式显示。如果我在 toSort 中进行更改,然后我想绘制排序,则会出现来自 toSort 的更改。

怎么了!?!

4

2 回答 2

2

如果这是一个数组,您可以使用它slice()来返回数组的副本,因为现在您在所有三个变量中引用同一个数组:

var workers = <?php echo json_encode($tablica_pracownikow); ?>;
var toSort = workers.slice(0);
var sort = workers.slice(0);

您当然也可以将 JSON 回显到每个变量:

var workers = <?php echo json_encode($tablica_pracownikow); ?>;
var toSort  = <?php echo json_encode($tablica_pracownikow); ?>;
var sort    = <?php echo json_encode($tablica_pracownikow); ?>;

这肯定会创建三个具有完全相同内容的不同数组,但根据 JSON 字符串的长度,slice()可能比解析相同字符串三次更有效,但无论如何您可能永远不会注意到差异。

于 2013-06-15T21:27:13.860 回答
1

您不是在创建新数组,您只是在创建对同一数组的新引用

您可以这样做以在不同的变量中复制数组 -

var workers = <?php echo json_encode($tablica_pracownikow); ?>;
var toSort = workers.slice(0);
var sort = workers.slice(0);
于 2013-06-15T21:27:41.243 回答