过滤数组的最佳方法是什么,并将结果保存在同一个数组中
例如:
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
最好的方法是什么?
感谢
答案 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) { ... });