将数字转换为数组元素并将未定义转换为空数组

时间:2017-01-31 20:10:31

标签: javascript angularjs arrays

在此Plunker示例中,以下过滤器用于使选择框选项仅可选择一次 http://plnkr.co/edit/BBqnTlxobUpiYxfhyJuj?p=preview

.filter('arrayDiff', function() {
return function(array, diff) {
  console.log(diff);
  var i, item, 
      newArray = [],
      exception = Array.prototype.slice.call(arguments, 2);

  for(i = 0; i < array.length; i++) {
    item = array[i];
    if(diff.indexOf(item) < 0 || exception.indexOf(item) >= 0) {
      newArray.push(item);
    }
  }

  return newArray;

};
});

我真的需要这样的过滤器,但问题是我的diff变量不是数组而是数字(选定的值)。 (它是1,2,3或未定义): 在此代码diff中,12,[3]或[]。 如何重写这样的过滤器以使用数字而不是数组。 这就是我使用过滤器的方式:http://plnkr.co/edit/L9hBa5LapAV76wHrwRnX?p=preview

1 个答案:

答案 0 :(得分:0)

这样的事情:

.filter('arrayDiff', function() {
return function(array, diff) {
  console.log(diff);
  var i, item, 
      newArray = [],
      exception = Array.prototype.slice.call(arguments, 2);

  for(i = 0; i < array.length; i++) {
    item = array[i];
    if(diff == item || exception.indexOf(item) >= 0) {
      newArray.push(item);
    }
  }

  return newArray;

};
});