Javascript jqGrid(';getGridParam';,';colNames';)奇数行为

Javascript jqGrid(';getGridParam';,';colNames';)奇数行为,javascript,jquery,jqgrid,Javascript,Jquery,Jqgrid,使用此函数返回网格的列名效果良好。拼接返回的数组时会出现问题 网格包含一个复选框作为第一列,因此我想从数组中删除它。这是代码 var columnTitles = $(table).getGridParam('colNames'); columnTitles.splice(0,1); 当我多次使用此函数(它正在导出到excel)时,就会出现问题。下次我导出时,getGridParam函数实际上返回列名的拼接数组,而不是实际列名。就好像它是通过引用或其他方式传递的 进一步证明它正在这样做,并且

使用此函数返回网格的列名效果良好。拼接返回的数组时会出现问题

网格包含一个复选框作为第一列,因此我想从数组中删除它。这是代码

var columnTitles = $(table).getGridParam('colNames'); 
columnTitles.splice(0,1);
当我多次使用此函数(它正在导出到excel)时,就会出现问题。下次我导出时,getGridParam函数实际上返回列名的拼接数组,而不是实际列名。就好像它是通过引用或其他方式传递的

进一步证明它正在这样做,并且我不只是在全局变量或其他方面有问题……如果我执行以下代码:

var columnTitles = $(table).getGridParam('colNames'); 
var columnTitles2 = $(table).getGridParam('colNames'); 
columnTitles.splice(0,1); 
console.log(columnTitles2); 

columnTitles2的值作为拼接数组返回。这可能是非常愚蠢的事情,但我在这里遗漏了什么?

方法
getGridParam
返回jqGrid使用的内部参数的引用。如果使用数组或对象,例如
colNames
colNames
,则应小心。您需要根据自己的目的修改数组,但不想更改jqGrid中的值。您应该首先复制数组,然后修改副本:

var columnTitles = $(table).jqGrid("getGridParam", "colNames").slice(); 
columnTitles.splice(0,1);

我用
slice
复制了jqGrid使用的内部
colNames

你在拼接
columnTitles
而不是
columnTitles2
。我知道,这就是重点。即使我在拼接柱标题,2也会拼接回来。看起来Oleg证实了我的怀疑,它是通过引用传递的,出于某种原因,这让我很惊讶。谢谢,我试图检查它是否是通过引用传递的,但没有发现任何东西,也没想到它会出于任何原因。也感谢您提供slice()选项。