Как вывести элементы массива без дублирующих значений?

Как вывести элементы массива без дублирующих значений названия города?

Вот код (React)

// Компонент UsersList
function UsersList(props) {
  // для удобства записываем значение props.users в переменную users
  const users = props.users; 
  // используя метод map() и заполняем данными тег li
  const listItems = users.map(( user, index ) =>
    <li key={ index.toString() } >                      
      { user[0] }
    </li>
  );
  // Возвращаем список с именами пользователей                              
  return (
    <ul> { listItems } </ul>
  );  
}

// Массив с именами пользователей
const users = [
["Москва","Пупкин","Пупок","Пупович","88005553535"],["Краснодар","Пупкин","Пупок","Пупович","88005553532"],
["Москва","Пупкин","Пупок","Пупович","88005553531"],["Сочи","Пупкин","Пупок","Пупович","88005553530"],["Иркутск","Пупкин","Пупок","Пупович","88005553535"]
];

// Выводим список пользователей на странице
ReactDOM.render(
  <UsersList users={users} />,
  document.getElementById('root')
);

Ответы (1 шт):

Автор решения: Vladimir T
const users = [
["Москва","Пупкин","Пупок","Пупович","88005553535"],["Краснодар","Пупкин","Пупок","Пупович","88005553532"],
["Москва","Пупкин","Пупок","Пупович","88005553531"],["Сочи","Пупкин","Пупок","Пупович","88005553530"],["Иркутск","Пупкин","Пупок","Пупович","88005553535"]
];
//result = Object.keys(users.reduce((ar, obj) => (ar[obj[0]] = obj, ar), {}));
result = [...new Set(users.reduce((ar, obj) => (ar.push(obj[0]), ar), []))];
console.dir(result);

https://jsfiddle.net/cyeuja0L/

Результат:

Array(4)
0: "Москва"
1: "Краснодар"
2: "Сочи"
3: "Иркутск"
→ Ссылка