如何过滤数组并在同一个数组中更新结果?

时间:2012-12-29 14:24:29

标签: javascript arrays

过滤数组的最佳方法是什么,并将结果保存在同一个数组中

例如:

var OBJ = function(x, y) {this.x = x; this.y = y};
obj1 = new OBJ(1, 2);
obj2 = new OBJ(2, 3);
obj3 = new OBJ(3, 2);
obj4 = new OBJ(3, 1);
obj5 = new OBJ(4, 5);

var array_1 = new Array(); array_1.push(obj1, obj2, obj3, obj4, obj5);

var array_2 = array_1.filter(function(el){
    return (el.x > 2);
});

输出:

array_1 = [obj1,obj2,obj3,obj4,obj5];

array_2 = [obj3,obj4,obj5];

我希望array_1更新像array_2

最好的方法是什么?

感谢

2 个答案:

答案 0 :(得分:1)

array_1 = array_1.filter(function(el){
    return (el.x > 2);
});

足够简单。

答案 1 :(得分:1)

如果你真的想这样做,你需要这样的东西:

function filterInPlace(a, ff) {
  var s, d;

  for (s = d = 0; s < a.length; ++s) {
    if (ff(a[s]))
      a[d++] = a[s];
  }
  a.length = d;
}

你会这样称呼它:

filterInPlace(array_1, function(element) { ... });