Сортировка против, если еще, если в javascript, какой выбрать? - PullRequest
0 голосов
/ 31 января 2019

У меня есть сценарий, в котором мне нужно отображать данные в порядке возрастания порядкового номера.

myArray = [
{custom_carousel: false, default_label: "SmartCards", index: 3, visible: true}, 
{custom_carousel: false, default_label: "Pathways", index: 2, visible: false},
{custom_carousel: false, default_label: "Pathways", index: 1, visible: false},
{custom_carousel: false, default_label: "Pathways", index: 0, visible: false}
]

Должен ли я сначала отсортировать массив или добавить условие if if else?

if(index === 0){

}else if (index === 1){

}else if (index === 2){

}else if (index === 3){

}

Ответы [ 4 ]

0 голосов
/ 31 января 2019
myArray.sort(function(a, b){return a.index - b.index});

Сортирует ваш массив по индексу

0 голосов
/ 31 января 2019

Сортировка займет время O (n + log (n)), а if-else-if-else - O (n 2 ).Так что сортировка - лучший выбор.

0 голосов
/ 31 января 2019

Вы можете использовать метод sort на основе значений index:

myArray = [
{custom_carousel: false, default_label: "Pathways", index: 2, visible: false},
{custom_carousel: false, default_label: "SmartCards", index: 3, visible: true}, 
{custom_carousel: false, default_label: "Pathways", index: 1, visible: false},
{custom_carousel: false, default_label: "Pathways", index: 0, visible: false}
]
console.log(myArray.sort((a,b)=>a.index - b.index));
0 голосов
/ 31 января 2019

Я предлагаю отсортировать массив заранее, а затем получить доступ по индексу массива.

Причины

  • легко поддерживать с большим количеством элементовмассив
  • простой в доступе в требуемом порядке
  • код, т. е. простой для понимания, вместо некоторого кода, причина которого не очевидна и требует объяснения
  • доступ быстрый,вместо итерации массива всегда с самого начала для получения следующего элемента.

var myArray = [{ custom_carousel: false, default_label: "SmartCards", index: 3, visible: true }, { custom_carousel: false, default_label: "Pathways", index: 2, visible: false }, { custom_carousel: false, default_label: "Pathways", index: 1, visible: false }, { custom_carousel: false, default_label: "Pathways", index: 0, visible: false }]

myArray.sort(({ index: a }, { index: b }) => a - b);

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