Jquery 列表未直接使用而被筛选

Jquery 列表未直接使用而被筛选,jquery,Jquery,代码如下: OnChangePaymentMode: function (mode) { var Data = []; Data = QuickJV.FormOperations.List; if (Data != null) { if (mode != "All") { for (var i = 0; i < Data.receiptList.length; i++) { Data.recei

代码如下:

OnChangePaymentMode: function (mode) {
    var Data = [];
    Data = QuickJV.FormOperations.List;
    if (Data != null) {
        if (mode != "All") {
            for (var i = 0; i < Data.receiptList.length; i++) {
                Data.receiptList[i].paymentModeList = Data.receiptList[i].paymentModeList.filter(function (el, i) {
                    return (el.paymentMode == mode);
                });
            }
            for (var i = 0; i < Data.paymentList.length; i++) {
                Data.paymentList[i].paymentModeList = Data.paymentList[i].paymentModeList.filter(function (el, i) {
                    return (el.paymentMode == mode);
                });
            }
        }
        QuickJV.FormOperations.CreateRowDataForReceiptAndPayment(Data);
    }
}
OnChangePaymentMode:函数(模式){
var数据=[];
数据=QuickJV.FormOperations.List;
如果(数据!=null){
如果(模式!=“全部”){
对于(变量i=0;i

我正在对“Data”变量使用jquery筛选器,但仍然会对我的
QuickJV.FormOperations.List
数据进行筛选,这是我的主列表。

您需要克隆数组。否则它将是一个引用类型,因此所有更改都将反映在主数组中

改变这个

var Data = [];
Data = QuickJV.FormOperations.List;


因为,在第三行中,您将数据指向主列表,所以它们是相同的。您需要复制或克隆array.QuickJV.FormOperations.List.clone不是一个函数抱歉,先生,我遇到了与slice不是函数相同的错误。请添加一些解释,说明为什么此代码有助于OP。这将有助于提供一个未来观众可以从中学习的答案。有关更多信息,请参阅。
var Data = [];
Data = QuickJV.slice();
Data=Data.FormOperations.List;
var Data = JSON.parse(JSON.stringify(QuickJV.FormOperations.List));