当我将值传递给数组时获取空数据

时间:2017-10-10 03:17:29

标签: javascript angularjs

我只是想知道如何获得一个空对象,以及如何解决它。

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];
        }
      }
    }

输出:

enter image description here

2 个答案:

答案 0 :(得分:1)

指数难以阅读且容易出错,您可以考虑使用.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);
});

答案 1 :(得分:-1)

来自我身边的愚蠢错误..

这是修复

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++;
        }
      }
    }