Javascript 过滤对象数组的最佳方法

Javascript 过滤对象数组的最佳方法,javascript,performance,underscore.js,Javascript,Performance,Underscore.js,这是过滤掉数组中所有现有对象的好方法吗 var arrayOfObjects = [ { id: 1, text: 'obj1'}, { id: 2, text: 'obj2'}, { id: 3, text: 'obj3'} ], ids = [ 1, 3 ], filteredArray = []; for (var x = 0, len = arrayOfObjects.length; x < len;

这是过滤掉数组中所有现有对象的好方法吗

var arrayOfObjects = [
        { id: 1, text: 'obj1'}, 
        { id: 2, text: 'obj2'}, 
        { id: 3, text: 'obj3'}
    ], 
    ids = [ 1, 3 ],
    filteredArray = [];

for (var x = 0, len = arrayOfObjects.length; x < len; x++) {
    for (var i = 0, ilen = ids.length; i < len; i++) {
        if (arrayOfObjects[x].id === ids[i]) {
            arrayOfObjects[x] = null;
            break;
        }
    }
}

filteredArray = _.filter(obj, function(o) { return !!(o); });
var arrayOfObjects=[
{id:1,文本:'obj1'},
{id:2,文本:'obj2'},
{id:3,文本:'obj3'}
], 
ids=[1,3],
filteredArray=[];
对于(变量x=0,len=arrayOfObjects.length;x

更新:其目标是从与ids数组中的id匹配的ArrayFobjects中筛选出对象。因此,上面的代码是有效的(filteredArray是[{id:2,text:'obj2'}),但是有更好的方法来实现这一点吗?

是的,有更好的方法:

var数组=[
{id:1,文本:“obj1”},
{id:2,文本:“obj2”},
{id:3,文本:“obj3”}
];
var-id=[1,3];
var idsIndex=toIndex(ids);
var result=array.filter(函数(obj){
return!idsIndex.hasOwnProperty(对象id);
});
警报(JSON.stringify(result,null,4));
函数toIndex(数组){
var length=array.length;
var result={};
var指数=0;
while(索引<长度)
结果[array[index++]]=true;
返回结果;

}
您想做什么?从数组中删除所有对象?您可以通过设置
obj.length=0
清空数组。如果您还想做其他事情,请用文字描述您到底想完成什么,并显示所需的输入和输出。@AmitJoki,谢谢,我添加了更多信息。可能重复:。