2017-02-06 9 views
0

配列として次のJSONを取得しましたが、ロールの属性をフィルタリングしようとしていますが、結果をフィルタリングできません。私を助けてください。オブジェクトの配列のフィルタの問題

var data = [{"roles":["citysupervisor"]},{"roles":["partner","supervisor"]},{"roles":["CitySupervisor"]},{"roles":["citysupervisor"]},{"roles":["partner"]},{"roles":["citysupervisor"]},{"roles":["partner","supervisor"]},{"roles":["clientsupervisor"]}]; 

私が書いたJavaScriptコードは以下の通りです:

var results = data.filter(function(user) { 
    var roles = user.roles; 

    return roles.filter(function(role) { 
    return role == 'clientsupervisor'; 
    }); 
}); 
+0

で、データオブジェクトから""を削除し、あなたは二重引用符( '" ')脱出したり、文字列をラップする必要がありますシングルクォート( '')で囲みます。 JSON!= JavaScript Objectに注意してください。 –

+0

私はprofileIdとnameという名前のロールと同じレベルの2つのキーがもう1つあるとしましょう。しかし、結果では、これらのキー名とprofileIdの両方がidである必要があります。どうすればいいの? –

答えて

3

あなたdata変数に構文エラーがあります。ラッピングしている引用符を削除する必要があります。

フィルタリングコードの変更もあります。このことから

変更:これに

"[{"roles":["citysupervisor"]},{"roles":["partner","supervisor"]},{"roles":["CitySupervisor"]},{"roles":["citysupervisor"]},{"roles":["partner"]},{"roles":["citysupervisor"]},{"roles":["partner","supervisor"]},{"roles":["clientsupervisor"]}]"; 

var data = [{"roles":["citysupervisor"]},{"roles":["partner","supervisor"]},{"roles":["CitySupervisor"]},{"roles":["citysupervisor"]},{"roles":["partner"]},{"roles":["citysupervisor"]},{"roles":["partner","supervisor"]},{"roles":["clientsupervisor"], "name": "Jack", "profileId": 34533}]; 
 

 
var results = data.filter(function (user){ 
 
\t return user.roles.indexOf('clientsupervisor') > -1; 
 
}); 
 

 
console.log(results);

+0

私はprofileIdとnameという名前のロールと同じレベルの2つのキーがもう2つあるとします。しかし、結果では、これらのキー名とprofileIdの両方がidである必要があります。どうすればいいの? –

+0

@Venkatでは、同じコードが同じレベルのより多くのキーで機能します。私はこれを実証するために私の例を更新しました。 –

0

が目試してみてください。

[{"roles":["citysupervisor"]},{"roles":["partner","supervisor"]},{"roles":["CitySupervisor"]},{"roles":["citysupervisor"]},{"roles":["partner"]},{"roles":["citysupervisor"]},{"roles":["partner","supervisor"]},{"roles":["clientsupervisor"]}]; 

それが働いて参照してください。 、簡単な方法

var results = data.filter(function(user) { 
    return user.roles.indexOf("clientsupervisor") > -1 ? true: false 
}); 

であり、これは無効なJSONである配列オブジェクト

var data = [{"roles":["citysupervisor"]},.....]; 
+0

私はprofileIdとnameという名前の同じレベルのロールでさらに2つのキーがあるとしましょう。しかし、結果では、これらのキー名とprofileIdの両方がidである必要があります。どうすればいいの? –

関連する問題