2017-07-13 17 views
0

オブジェクトの配列をフィルタリングする関数を実装する必要があります。フィルター配列は、ユーザーの特定のプロパティーに対してフィルター処理されるプロパティー名と値を持つオブジェクトで構成されます。オブジェクトの配列のフィルタ関数

例:

var filters = [ 
    { 
    column: 'username', 
    value: 'test user' 
    }, 
    { 
    column: 'name', 
    value: 'test name' 
    } 
] 

var users = [ 
    { 
     name: 'test name user', 
     username: 'some test user' 
    }, 
    { 
     name: 'another name', 
     username: 'another username' 
    } 
] 

// filter logic 

console.log(users); // [{'name': 'test name user', 'username': 'some test user'}] 
+1

マインドを? – Ethan

+0

アレイフィルター方式を使用しましたか? – evolutionxbox

+1

'Array'で利用可能なネイティブの' filter'関数、https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/Array/filterを使用することができます。あるいは、 'filter'関数を含む' lodash'ライブラリを使うことができます:https://lodash.com/docs/4.17.4#filter –

答えて

2

あなたはArray#someを繰り返すことによって、ユーザのリストとArray#filterそれらを反復処理することができます(または、 - 少なくとも一つの一致した場合)、またはArray#every(そして - すべてが一致している必要があります)。

var filters = [{"column":"username","value":"test user"},{"column":"name","value":"test name"}]; 
 

 
var users = [{"name":"test name user","username":"test user"},{"name":"another name","username":"another username"}]; 
 

 
var result = users.filter(function(user) { 
 
    return filters.some(function(filter) { // use some for Or, and every for And 
 
    return user[filter.column] === filter.value; 
 
    }); 
 
}); 
 

 
console.log(result);

+0

あなたはそれに私を打つ – Endless

0

またFunctions#ArrowFunctionsを使用するなど、元の配列сhangeことができます。私達にあなたの試みを示す

var filters = [{"column":"username","value":"test user"},{"column":"name","value":"test name"}]; 
 

 
var users = [{"name":"test name user","username":"test user"},{"name":"another name","username":"another username"}]; 
 

 
users = users.filter((user) => { 
 
    return filters.some((filter) => { 
 
    return user[filter.column] === filter.value; 
 
    }); 
 
}); 
 

 
console.log(users);

関連する問題