使用Javascript过滤功能

时间:2014-09-09 12:54:55

标签: javascript arrays filter

我会尽力正确地说出来 - 感谢您的帮助。

我有一个包含一系列邮政编码的数组,(例如六个)其中一个是空的。使用javascripts过滤器函数,我使用以下代码删除了空元素:

var filteredrad = radius1.filter(function(val) {
  return !(val === "" || typeof val == "undefined" || val === null);
});

现在我需要以某种方式存储从原始数组中删除哪个元素的索引,但我不确定如何。

例如,过滤器会删除索引1处的空格。如何保存该号码以便稍后使用?

["WC1A 1EA", "", "B68 9RT", "WS13 6LR", "BN21TW", "wv6 9ex"] 

希望有意义,任何帮助都会受到高度赞赏。

阿什利

4 个答案:

答案 0 :(得分:5)

您可以使用filter的{​​{3}}:

来使用副作用
var removed = [];
var filteredrad = radius1.filter(function(val, index) {
    if (val === "" || typeof val == "undefined" || val === null) {
        removed.push(index);
        return false;
    }
    return true;
});

答案 1 :(得分:0)

filter函数将三个参数传递给回调函数https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter

所以你可以写:

var storedIndexes = []
var filteredrad = radius1.filter(function(val, index) {
  val isNull = (val === "" || typeof val == "undefined" || val === null);
  if(isNull){
    storedIndexes.push(index);
  }
  return !isNull;
});

并将索引保​​存在storedIndexes

答案 2 :(得分:0)

radius1 = ["WC1A 1EA", "", "B68 9RT", "WS13 6LR", "BN21TW", "wv6 9ex"];
removed = [];
var filteredrad = radius1.filter(function(val, index) {
  if (val === "" || typeof val == "undefined" || val === null) {
    removed.push(index); 
    return false;
  }
  return true;
});

答案 3 :(得分:0)

另一个以另一种方式做你想做的事的例子

var collection = ["WC1A 1EA", "", "B68 9RT", "WS13 6LR", "BN21TW", "wv6 9ex"] ;

var postalCodes = (function(){
  var emptyIndices;

  return {
    getCodes: function( array ){
      emptyIndices = [];
      return array.filter(function( value, index, array ){
        if( !value ){
          emptyIndices.push(index);
          return false;
        }else{
          return true;
        }
      });
    },
    getEmptyIdices: function(){
      return emptyIndices || null;
    }
  };
})();

然后致电

postalCodes.getCodes(collection);
=> ["WC1A 1EA", "B68 9RT", "WS13 6LR", "BN21TW", "wv6 9ex"];

postalCodes.getEmptyIndices();
=> [1];