Angular 4从数组对象中删除重复项
问题描述:
我在我的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"}]
答
您可以使用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>
答
的lodash方法_.uniqBy(root, 'duplicateElement');
也可以使用。使用这种方法的优点是你可以告诉lodash你想删除重复的元素。
var newJsonFile = _.uniqBy(label, 'Space_Type');
console.log(newJsonFile);
在折角,你需要下载软件包lodash
npm install lodash
然后将它导入
import * as _ from 'lodash';
这是纯JavaScript数据操作。你可以写一个函数来做到这一点,或者你可以使用lodash或下划线 –