Как отсортировать массив из объектов по двум свойствам?

256
04 ноября 2017, 16:25

Есть не сортированный массив, который нужно отсортировать по принципу если value текущего элемента равно val следующего то в начале идет текущий элемент, затем следующий элемент удовлетворяющий данному условию, проход массива начинается с элемента со значением val: one;

Достаточно долго бьюсь с данной задачей и хотелось бы уже узнать, можно ли решить данную задачу с помощью reduce или filter

[
  {val: 'one', value: 'two', someVal: 222},
  {val: 'three', value: 'four', someVal: 26346},
  {val: 'two', value: 'three', someVal: 7565},
  {val: 'six', value: 'one', someVal: 227745}
]

На выходе должен получиться такой результат:

[
  {val: 'one', value: 'two', someVal: 222},
  {val: 'two', value: 'three', someVal: 7565},
  {val: 'three', value: 'four', someVal: 26346},
  {val: 'six', value: 'one', someVal: 227745}
]
Answer 1

filter ничего сортировать не будет. Он что-то оставит, а что-то 'удалит' из исходного массива. Наверное проще все же использовать предназначенный для этого sort

console.log([ 
    {val: 'one', value: 'two', someVal: 222}, 
    {val: 'three', value: 'four', someVal: 26346}, 
    {val: 'two', value: 'three', someVal: 7565}, 
    {val: 'six', value: 'one', someVal: 227745} 
].sort((a,b)=>a.val===b.value));

READ ALSO
Как сохранить данные с сайта в csv-файл

Как сохранить данные с сайта в csv-файл

Всем приветУ меня очень тупой вопрос

250
Удалить конкретные теги

Удалить конкретные теги

В div contenteditable при наборе текста после первого слова ставится 1 <br> (стандартный) и 1 <br> которым я фиксил один багВопрос как можно заменить...

233
jQuery кавычки в списке атрибутов

jQuery кавычки в списке атрибутов

Всем добраНе могу понять как экранировать вставку переменной в списке атрибутов

236