Javascript Массив Specifi c Заказать - PullRequest
1 голос
/ 31 января 2020

У меня есть массив js object

const name = 'Levi'
var data = [ 
{ firstname: 'Levi', food: 'apple'     },
{ firstname: 'Eren', food: 'orange'   },
{ firstname: 'Levi', food: 'grapes' },
{ firstname: 'Miks', food: 'banana' }
];

Как мне отсортировать имена и приоритеты (Леви) как сверху.

Ожидаемый результат:

[{firstname: Levi, food: apple},
{ firstname: Levi, food: grapes },
{ firstname: Eren, food: orange   },
{ firstname: Miks, food: banana}]

Я использовал этот код

this.data.sort((a, b) => (a.firstname > name) ? 1 : ((name> a.firstname) ? -1 : 0));

Ответы [ 2 ]

1 голос
/ 31 января 2020

Первая проверка a и b firstname: name или нет, если true, ничего не делать.

Далее, проверка a firstname или b firstname name , если true, найдите, кто имеет имя name, и поменяйте местами a и b или нет.

Наконец, проверьте с правилом алфавитного порядка.

const name = 'Levi'
var data = [
  { firstname: 'Levi', food: 'apple' },
  { firstname: 'Eren', food: 'orange' },
  { firstname: 'Levi', food: 'grapes' },
  { firstname: 'Miks', food: 'banana' },
  { firstname: 'AMiks', food: 'mango' }
];

const sorted = data.sort((a, b) => {
  if (a.firstname === name && b.firstname === name) {
    return 0;
  }
  if (a.firstname === name || b.firstname === name) {
    return a.firstname === name ? -1 : 1;
  }
  return a.firstname.localeCompare(b.firstname);
});

console.log(sorted);

Вывод:

[ { firstname: 'Levi', food: 'apple' },
  { firstname: 'Levi', food: 'grapes' },
  { firstname: 'AMiks', food: 'banana' },
  { firstname: 'Eren', food: 'orange' },
  { firstname: 'Miks', food: 'banana' } ]
0 голосов
/ 31 января 2020

Если имена a и b равны имени, то сортируйте их по пище. Если имя это имя, то расставьте приоритеты.

const name = "Levi";
var data = [
  { firstname: "Levi", food: "apple" },
  { firstname: "Eren", food: "orange" },
  { firstname: "Levi", food: "grapes" },
  { firstname: "Miks", food: "banana" }
];

const sortAsc = (a, b) => {
  if (b > a) {
    return -1;
  }
  if (a > b) {
    return 1;
  }
  return 0;
};

data.sort((a, b) => {
  if (a.firstname === name && b.firstname === name) {
    return sortAsc(a.food, b.food);;
  }
  if (a.firstname === name) {
    return -1;
  }
});


console.log(data);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...