Работа с массивом, сортировка, создание поля и изменение значения
Всем привет.
Хочу вывести категории с "алфавитом", т.е. отсортировать их и вывести что-то вроде пункта, в котором находиться первый символ значения ключа.
К примеру, есть массив
[{name: 'слово'},{name: 'слово'},{name: 'название'},{name: 'имя'}]
Сначала я его сортирую так:
var catalogSort = catalog.sort(function(one, two) {
if (one.name < two.name) return -1;
if (one.name > two.name) return 1;
return 0;
});
Теперь добавляю новое поле с первым символом:
var used = [];
for(var x = 0; x < catalogSort.length; x++) {
used[x] = {val: catalogSort[x].name.slice(0, 1), name: catalogSort[x].name}
}
Получаю такой массив:
[{val: 'с', name: 'слово'},{val: 'с', name: 'слово'},{val: 'н', name: 'название'},{val: 'и', name: 'имя'}]
Теперь проблема в том, что мне нужно поле val изменить на false в том случае, если значение уже встречается в массиве. Как такое реализовать, чтобы получить такой массив?
[{val: 'с', name: 'слово'},{val: 'false', name: 'слово'},{val: 'н', name: 'название'},{val: 'и', name: 'имя'}]
Источник: Stack Overflow на русском