2017-10-10 35 views
0

我只是想知道我是如何得到空對象的。以及如何解決它?當我將值傳遞給數組時,獲取空數據

tax1有16個對象

工資控制器

if (vm.period === 'Semi-Monthly') { 
     for (var x = 0; x < vm.tax1.length; x++) { 
     if (vm.tax1[x].eventType === 'sm') { 
      vm.tax2[x] = vm.tax1[x]; 
     } 
     } 
    } else if(vm.period === 'Monthly'){ 
     for (var y = 0; y < vm.tax1.length; y++) { 
     if (vm.tax1[y].eventType === 'm') { 
      vm.tax2[y] = vm.tax1[y]; 
     } 
     } 
    } 

OUTPUT:

enter image description here

每一個建議是表示讚賞。

從我身邊
+0

請添加實際代碼而不是圖片。 – Tushar

+1

這是因爲您正在使用相同的索引x或y。假如你的迭代中有匹配條件if(vm.tax1 [x] .eventType ==='sm'),當x> = 8時,vm.tax2 [x]將在第8個位置和第一個位置添加第一個條目7將變空。類似的情況是y。 – Harpreet

+1

@Harpreet嘿人感謝您的解釋,喝咖啡後,我知道修復通過創建另一個變量開始爲0,並將其放入tax2 [var 0這裏] – Priz

回答

0

愚蠢的錯誤..

這裏的修復

var x = 0; 
var y = 0; 

    if (vm.period === 'Semi-Monthly') { 
     for (x = 0; x < vm.tax1.length; x++) { 
     if (vm.tax1[x].eventType === 'sm') { 
      vm.tax2[y] = vm.tax1[x]; 
      y++; 
     } 
     } 
    } else if(vm.period === 'Monthly'){ 
     for (x = 0; x < vm.tax1.length; x++) { 
     if (vm.tax1[x].eventType === 'm') { 
      vm.tax2[y] = vm.tax1[x]; 
      y++; 
     } 
     } 
    } 
0

指數難以閱讀和容易出錯的,你可以考慮使用.push.filter

使用.push

vm.tax2 = []; 
var eventType; 

if (vm.period == 'Semi-Monthly') { 
    eventType = 'sm'; 
} 
else if(vm.period == 'Monthly') { 
    eventType = 'm'; 
} 

vm.tax1.forEach(function(item) { 
    if (item.eventType == eventType) { 
    vm.tax2.push(item); 
    } 
}); 

使用.filter

var eventType; 

if (vm.period == 'Semi-Monthly') { 
    eventType = 'sm'; 
} 
else if(vm.period == 'Monthly') { 
    eventType = 'm'; 
} 

vm.tax2 = vm.tax1.filter(function(item) { 
    return (item.eventType == eventType); 
});