2016-04-05 3 views
-1

У меня есть массив объектов, как это:Character быть первым в рода

var myArray = [{name: 'John', sortItem: 'abra'}, {name: 'Doe', sortItem: 'cadabra'}] 

Некоторые данные Сдерживает:

  1. эти элементы являются динамическими - как «имя» и свойства «sortItem»;
  2. есть веская причина для отображения имени, но сортировки по другому полю;
  3. этот массив поступает с сервера, поэтому он должен быть легко JSON-строгим.

Тогда сортировать его sortBy(myArray, 'sortItem') (sortBy от lodash).

Теперь я хочу добавить параметр по умолчанию, и я хочу убедиться, что это всегда первый вариант после сортировки. Так что я попробовал несколько вариантов:

  1. var myList = ['a', 'A', 0]; _.sortBy(myList) результаты в ["A", "a", 0]
  2. var myList = ['a', 'A', '_']; _.sortBy(myList) результатов в ["A", "_", "a"]
  3. var myList = ['a', 'A', '.']; _.sortBy(myList) результатов в [".", "A", "a"]
  4. var myList = ['a', 'A', '']; _.sortBy(myList) приводит ["", "A", "a"]

Кажется, что т y лучший выбор на данный момент заключается в том, чтобы добавить {name: 'Default', sodtItem: ''}, но есть ли другой символ/значение, которое обеспечит мне, что мой элемент по умолчанию является первым?

Редактировать

Вопрос заключается не в том, чтобы построить функцию сортировки; но вместо этого, какой символ имеет самое низкое «значение» в Javascript?

Другими словами, если вы берете список всех возможных символов (те, которые передают jsonification) и сортируют их - что будет первым персонажем?

+0

Сортировать функции будут производит неожиданные результаты с одной и той же строкой. Используйте его осторожно. –

+1

Можете ли вы отсортировать сначала и * затем * вставить элемент по умолчанию? – nnnnnn

+0

Что персонаж должен сортировать первым? –

ответ

0

Вы можете добавить другое поле сортировки, которое будет определять основной порядок, а «sortItem» будет вашим вторичным видом.

Так что ваша сортировка выглядит следующим образом:

_.sortBy(myArray, ['default', 'sortItem']) 

И ваш массив выглядит следующим образом:

var myArray = [ 
    {name: 'John', sortItem: 'abra'}, 
    {name: 'Doe', sortItem: 'cadabra'}, 
    {name: 'This is the default', sortItem: 'zzzzz', default: true} 
]; 
+0

Это правильный вариант, но я бы подождал, если будет более простой ответ. Если нет, я отмечу это как ответ. – XAMeLi

Смежные вопросы