2016-10-12 8 views
0

複数の(動的)JSONオブジェクトを持つJSON配列があります。私はオブジェクトを比較し、すべてのオブジェクトで同じ値を持つキーを選択する必要があります。 JSONは次のようになります。AngularJSを使用してJSON配列内のJSONオブジェクト内に同じ値を持つ要素を取得するフィルタを適用する方法

[ 
    { 
     "CreateAccountName":"Joseph", 
     "CreateDateTime":"0001-01-01T00:00:00", 
     "Description":"Utilization of services", 
     "Type":2, 
     "Id":1000000001, 
     "Count":1, 
     "ModifiedAccountName":"", 
     "ModifiedDateTime":"2016-10-04T10:16:40.5190025", 
     "Name":"Utilization of services", 
     "CardCount":0, 
     "Target":95, 
     "UniversalId":"SDFOPIJ-SDFGLKJ-ER234-234LF", 
     "AccountId":0, 
     "AccountName":"Joseph" 
    }, 

    { 
     "CreateAccountName":"Joseph", 
     "CreateDateTime":"0001-01-01T00:00:00", 
     "Description":"Utilization of Food", 
     "Type":2, 
     "Id":1000000001, 
     "Count":1, 
     "ModifiedAccountName":"", 
     "ModifiedDateTime":"2016-10-04T10:16:40.5190025", 
     "Name":"Utilization of Food", 
     "CardCount":0, 
     "Target":95, 
     "UniversalId":"SDFOPIJ-SDFGLKJ-ER234-234LF", 
     "AccountId":0, 
     "AccountName":"Joseph" 
    }, 

    { 
     "CreateAccountName":"Joseph", 
     "CreateDateTime":"0001-01-01T00:00:00", 
     "Description":"Utilization of services", 
     "Type":2, 
     "Id":1000000001, 
     "Count":1, 
     "ModifiedAccountName":"", 
     "ModifiedDateTime":"2016-10-04T10:16:40.5190025", 
     "Name":"Utilization of services", 
     "CardCount":0, 
     "Target":95, 
     "UniversalId":"SDFOPIJ-SDFGLKJ-ER234-234LF", 
     "AccountId":0, 
     "AccountName":"Joseph" 
    } 
] 

同じ値を持つキーを取得したいと思います。例、CreateAccountName。それはすべてのオブジェクトで同じ値を持っています。

トリッキーなケースは、キー自体が動的です。私は鍵をハードコードできず、比較することはできません。キー名が変わったり、別のキーが来たりすることがあります。私はオブジェクトの "交差点"を比較して取得する汎用的なソリューションを探しています。

+0

でこれを行うことができます値かどうか – Hmahwish

答えて

1

あなたは、リストを反復処理し、異なるオブジェクトのキーと値の配列を格納し、その特定のキーがすべて同じを持っているかどうかを確認する必要がありちょうどArray.reduce()

var json = [ 
 
    { 
 
     "CreateAccountName":"Joseph", 
 
     "CreateDateTime":"0001-01-01T00:00:00", 
 
     "Description":"Utilization of services", 
 
     "Type":2, 
 
     "Id":1000000001, 
 
     "Count":1, 
 
     "ModifiedAccountName":"", 
 
     "ModifiedDateTime":"2016-10-04T10:16:40.5190025", 
 
     "Name":"Utilization of services", 
 
     "CardCount":0, 
 
     "Target":95, 
 
     "UniversalId":"SDFOPIJ-SDFGLKJ-ER234-234LF", 
 
     "AccountId":0, 
 
     "AccountName":"Joseph" 
 
    }, 
 

 
    { 
 
     "CreateAccountName":"Joseph", 
 
     "CreateDateTime":"0001-01-01T00:00:00", 
 
     "Description":"Utilization of Food", 
 
     "Type":2, 
 
     "Id":1000000001, 
 
     "Count":1, 
 
     "ModifiedAccountName":"", 
 
     "ModifiedDateTime":"2016-10-04T10:16:40.5190025", 
 
     "Name":"Utilization of Food", 
 
     "CardCount":0, 
 
     "Target":95, 
 
     "UniversalId":"SDFOPIJ-SDFGLKJ-ER234-234LF", 
 
     "AccountId":0, 
 
     "AccountName":"Joseph" 
 
    }, 
 

 
    { 
 
     "CreateAccountName":"Joseph", 
 
     "CreateDateTime":"0001-01-01T00:00:00", 
 
     "Description":"Utilization of services", 
 
     "Type":2, 
 
     "Id":1000000001, 
 
     "Count":1, 
 
     "ModifiedAccountName":"", 
 
     "ModifiedDateTime":"2016-10-04T10:16:40.5190025", 
 
     "Name":"Utilization of services", 
 
     "CardCount":0, 
 
     "Target":95, 
 
     "UniversalId":"SDFOPIJ-SDFGLKJ-ER234-234LF", 
 
     "AccountId":0, 
 
     "AccountName":"Joseph" 
 
    } 
 
]; 
 

 
var intersection = json.reduce(function(result, item) { 
 
    Object.keys(result).forEach(function(key) { 
 
    if(! item.hasOwnProperty(key) || item[key] !== result[key]) delete result[key]; 
 
    }); 
 
    return result; 
 
}); 
 

 
console.log(intersection)

関連する問題