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

array_2 = [obj3、obj4、obj5];

array_2 のように array_1 を更新したい

最善の方法は何ですか?

ありがとう

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 に答える