2012-12-29 33 views
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); 
}); 

OUTPUT:

array_1 = [OBJ1,OBJ2,OBJ3,OBJ4,obj5 ]。

array_2 = [OBJ3,OBJ4,obj5];

我要像array_2

的array_1更新什么是最好的方法是什么?

感谢

+1

你必须写拥有“过滤器”功能。你打算如何处理未通过测试的数组条目?另外,为什么在原地进行过滤很重要? – Pointy

+2

'VAR array_1 = array_1.filter(...);'? –

回答

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

够简单。

+0

那么,这将工作,但它不是真正的“同一阵列” :-) – Pointy

+0

@Pointy啊,你说得对。您的自定义功能对此更好。 –

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) { ... }); 
+0

非常感谢你的回答亲爱的 –

相关问题