2017-10-09 67 views
2

我在我的Angular 4应用程序中使用json数组对象,并且需要在我的JSON数组中找到唯一的空间类型。Angular 4从数组对象中删除重复项

JSON数组:

[{"label":{"Space_Type":"Office_PrivateOffice"}},{"label":{"Space_Type":"Office_PrivateOffice"}},{"label":{"Space_Type":"Office_PrivateOffice"}},{"label":{"Space_Type":"Hospital_Lab"}}, 
{"label":{"Space_Type":"Office_OpenOffice"}}, 
{"label":{"Space_Type":"Office_PrivateOffice"}}, 
{"label":{"Space_Type":"Office_PrivateOffice"}},{}, 
{"label":{"Space_Type":"Office_PrivateOffice"}}, 
{"label":{"Space_Type":"Office_PrivateOffice"}},{"label":{"Space_Type":"Office_PrivateOffice"}},{"label":{"Space_Type":"Hospital_Lab"}},{"label":{"Space_Type":"Office_OpenOffice"}},{"label":{"Space_Type":"Office_PrivateOffice"}},{"label":{"Space_Type":"Office_OpenOffice"}},{}] 

我想删除所有重复的空间类型。可有人告诉我怎样可以得到的。 我想要的结果:

[{Idx:0,Label:"Office_PrivateOffice"},{Idx:1,Label:"Office_OpenOffice"}] 
+0

这是纯JavaScript数据操作。你可以写一个函数来做到这一点,或者你可以使用lodash或下划线 –

回答

4

您可以使用lodash方法_.uniqWith

var jsonarray = [{"label":{"Space_Type":"Office_PrivateOffice"}},{"label":{"Space_Type":"Office_PrivateOffice"}},{"label":{"Space_Type":"Office_PrivateOffice"}},{"label":{"Space_Type":"Hospital_Lab"}}, 
 
{"label":{"Space_Type":"Office_OpenOffice"}}, 
 
{"label":{"Space_Type":"Office_PrivateOffice"}}, 
 
{"label":{"Space_Type":"Office_PrivateOffice"}},{}, 
 
{"label":{"Space_Type":"Office_PrivateOffice"}}, 
 
{"label":{"Space_Type":"Office_PrivateOffice"}},{"label":{"Space_Type":"Office_PrivateOffice"}},{"label":{"Space_Type":"Hospital_Lab"}},{"label":{"Space_Type":"Office_OpenOffice"}},{"label":{"Space_Type":"Office_PrivateOffice"}},{"label":{"Space_Type":"Office_OpenOffice"}},{}]; 
 

 

 
var filtered = _.uniqWith(jsonarray, _.isEqual); 
 

 
console.log(filtered);
<script src='https://cdn.jsdelivr.net/lodash/4.17.2/lodash.min.js'></script>

1

的lodash方法_.uniqBy(root, 'duplicateElement');也可以使用。使用这种方法的优点是你可以告诉lodash你想删除重复的元素。

var newJsonFile = _.uniqBy(label, 'Space_Type'); 
console.log(newJsonFile); 

在折角,你需要下载软件包lodash

npm install lodash 

然后将它导入

import * as _ from 'lodash';