Как вывести уникальные элементы многомерного массива?
Есть многомерный массив:
var pl_name = [
['Красноярский край, Красноярск', [56.00473,92.827998], 'Лукъяненко Сергей', 'Лабиринт отражений', '450'],
['Красноярский край, Березовка', [56.029293,93.11639], 'Лукъяненко Сергей', 'Лабиринт отражений', '450'],
['Красноярский край, Красноярск', [56.00473,92.827998], 'Джоан Роулинг', 'Гарри Поттер', '420'],
['Красноярский край, Березовка', [56.029293,93.11639], 'Джоан Роулинг', 'Гарри Поттер', '420'],
['Красноярский край, Красноярск', [56.00473,92.827998], 'Лукъяненко Сергей', 'Лабиринт отражений', '450'],
['Красноярский край, Березовка', [56.029293,93.11639], 'Лукъяненко Сергей', 'Лабиринт отражений', '450'],
['Красноярский край, Красноярск', [56.00473,92.827998], 'Джоан Роулинг', 'Гарри Поттер', '420'],
['Красноярский край, Березовка', [56.029293,93.11639], 'Джоан Роулинг', 'Гарри Поттер', '420'],
['Красноярский край, Красноярск', [56.00473,92.827998], 'Лукъяненко Сергей', 'Ночной дозор', '540'],
['Красноярский край, Солонцы', [56.0686,92.826718], 'Лукъяненко Сергей', 'Ночной дозор', '540']
];
Нужно, чтобы повторяющиеся элементы попали во второй массив только один раз. Вот так:
var places = [
['Красноярский край, Красноярск', [56.00473,92.827998], 'Лукъяненко Сергей', 'Лабиринт отражений', '450'],
['Красноярский край, Березовка', [56.029293,93.11639], 'Лукъяненко Сергей', 'Лабиринт отражений', '450'],
['Красноярский край, Красноярск', [56.00473,92.827998], 'Джоан Роулинг', 'Гарри Поттер', '420'],
['Красноярский край, Березовка', [56.029293,93.11639], 'Джоан Роулинг', 'Гарри Поттер', '420'],
['Красноярский край, Красноярск', [56.00473,92.827998], 'Лукъяненко Сергей', 'Ночной дозор', '540'],
['Красноярский край, Солонцы', [56.0686,92.826718], 'Лукъяненко Сергей', 'Ночной дозор', '540']
];
Ответы (2 шт):
Автор решения: Алексей Шиманский
→ Ссылка
Задача странная, но:
let pl_name = [
['Красноярский край, Красноярск', [56.00473, 92.827998], 'Лукъяненко Сергей', 'Лабиринт отражений', '450'],
['Красноярский край, Березовка', [56.029293, 93.11639], 'Лукъяненко Сергей', 'Лабиринт отражений', '450'],
['Красноярский край, Красноярск', [56.00473, 92.827998], 'Джоан Роулинг', 'Гарри Поттер', '420'],
['Красноярский край, Березовка', [56.029293, 93.11639], 'Джоан Роулинг', 'Гарри Поттер', '420'],
['Красноярский край, Красноярск', [56.00473, 92.827998], 'Лукъяненко Сергей', 'Лабиринт отражений', '450'],
['Красноярский край, Березовка', [56.029293, 93.11639], 'Лукъяненко Сергей', 'Лабиринт отражений', '450'],
['Красноярский край, Красноярск', [56.00473, 92.827998], 'Джоан Роулинг', 'Гарри Поттер', '420'],
['Красноярский край, Березовка', [56.029293, 93.11639], 'Джоан Роулинг', 'Гарри Поттер', '420'],
['Красноярский край, Красноярск', [56.00473, 92.827998], 'Лукъяненко Сергей', 'Ночной дозор', '540'],
['Красноярский край, Солонцы', [56.0686, 92.826718], 'Лукъяненко Сергей', 'Ночной дозор', '540']
];
let result = [];
pl_name.forEach((el, index) => {
let existsInResult = false;
result.forEach(el2 => {
if (el <= el2 && el >= el2)
existsInResult = true;
});
if (!existsInResult)
result.push(el);
});
console.log(result);
Автор решения: vsemozhebuty
→ Ссылка
Если порядок элементов постоянный и там только строки и числа, можно ещё так:
const pl_name = [
['Красноярский край, Красноярск', [56.00473, 92.827998], 'Лукъяненко Сергей', 'Лабиринт отражений', '450'],
['Красноярский край, Березовка', [56.029293, 93.11639], 'Лукъяненко Сергей', 'Лабиринт отражений', '450'],
['Красноярский край, Красноярск', [56.00473, 92.827998], 'Джоан Роулинг', 'Гарри Поттер', '420'],
['Красноярский край, Березовка', [56.029293, 93.11639], 'Джоан Роулинг', 'Гарри Поттер', '420'],
['Красноярский край, Красноярск', [56.00473, 92.827998], 'Лукъяненко Сергей', 'Лабиринт отражений', '450'],
['Красноярский край, Березовка', [56.029293, 93.11639], 'Лукъяненко Сергей', 'Лабиринт отражений', '450'],
['Красноярский край, Красноярск', [56.00473, 92.827998], 'Джоан Роулинг', 'Гарри Поттер', '420'],
['Красноярский край, Березовка', [56.029293, 93.11639], 'Джоан Роулинг', 'Гарри Поттер', '420'],
['Красноярский край, Красноярск', [56.00473, 92.827998], 'Лукъяненко Сергей', 'Ночной дозор', '540'],
['Красноярский край, Солонцы', [56.0686, 92.826718], 'Лукъяненко Сергей', 'Ночной дозор', '540']
];
const result = Array.from(
new Set(pl_name.map(_ => JSON.stringify(_))),
_ => JSON.parse(_),
);
console.log(result);