В AngularJS У меня есть объект тысяч записей из вызова API JSON. Мне нужно создать новый массив только из одного указанного c ключа из каждой записи ("topi c"), что приведет к массиву только уникальных значений. Является ли foreach l oop единственным способом сделать это? Например:
Массив данных (обр):
{
"id": 1,
"number": 2,
"section": "xx",
"importance": "high",
"applicability": "General",
"text": "some text here",
"topic":
{
"id": 30,
"title": "Gender and Diversity"
}
},
{
"id": 2,
"number": 2.1,
"section": "xx",
"importance": "high",
"applicability": "General",
"text": "some text here",
"topic":
{
"id": 31,
"title": "Health and Safety"
}
}, ...
Я хотел бы получить массив только тем из тысяч записей, например:
"topic":
{
"id": 30,
"title": "Gender and Diversity"
},
"topic":
{
"id": 31,
"title": "Health and Safety"
},..
Есть ли лучший (более быстрый) метод для создания этого списка, чем тот, который у меня есть в настоящее время: foreach l oop с операторами if, за которым следует фильтр уникальных значений ?:
var topics = function (arr) {
var topics = [];
angular.forEach(arr.data, function (ts) {
angular.forEach(ts.topic, function (t) {
if (t.title) {
this.push(t);
}
}, topics);
});
// Filter the unique values
var elementId = [];
var uniqueTopics = topics.filter(el => {
if (elementId.indexOf(el.id) === -1) {
// If not present in array, then add it
elementId.push(el.id);
return true;
} else {
// Already present in array, don't add it
return false;
}
});
return uniqueTopics;
};