#javascript #arrays #unique
#javascript #массивы #уникальный
Вопрос:
У меня есть такой массив, как этот:
var data = [
{ Group: 'A', Name: 'SD' },
{ Group: 'B', Name: 'FI' },
{ Group: 'A', Name: 'MM' },
{ Group: 'B', Name: 'CO' }
];
Я хочу получить только уникальные значения группы в массиве, подобном:
var unique = ['A','B'];
Я просмотрел некоторые примеры на SO, но я их не понимаю. Кто-нибудь может сказать мне, как я должен это сделать?
Ответ №1:
var data = [
{ Group: 'A', Name: 'SD' },
{ Group: 'B', Name: 'FI' },
{ Group: 'A', Name: 'MM' },
{ Group: 'B', Name: 'CO' }
];
var set = {};
for (var i = 0; i < data.length; i )
set[data[i].Group] = 1;
var arr = [];
for(var key in set)
arr.push(key);
alert(arr);
Комментарии:
1. Замените этот цикл на
arr = Object.keys(set)
2. К вашему сведению,
Object.keys
это новое в ECMAScript 5, поэтому оно может быть доступно не во всех браузерах ( ссылка )3. @PetarIvanov Это отлично работает в IE9. К вашему сведению, это не будет работать в IE < 9. Есть предложения о том, как я должен это делать без Object.keys() ?
4. @user686924: смотрите developer.mozilla.org/en/JavaScript/Reference/Global_Objects/…
5. @user686924: я вернулся к своему первоначальному решению, которое не использует
Object.keys
Ответ №2:
Если вы используете ES6 / ES2015 или более поздние версии, вы можете сделать это таким образом:
var unique = [...new Set(data.map(item => item.Group))];
Вот пример того, как это сделать.