1

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

例如 :

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

数组_2 = [obj3,obj4,obj5];

我希望 array_1 像 array_2 一样更新

最好的方法是什么?

谢谢

4

2 回答 2

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

很简单。

于 2012-12-29T14:26:54.103 回答
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) { ... });
于 2012-12-29T14:30:44.857 回答