排序vs是否在javascript中选择哪一个?

时间:2019-01-31 12:38:28

标签: javascript arrays sorting if-statement

在一种情况下,我需要按索引号的升序显示数据。

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(index === 0){

}else if (index === 1){

}else if (index === 2){

}else if (index === 3){

}

4 个答案:

答案 0 :(得分:2)

您可以基于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));

答案 1 :(得分:2)

myArray.sort(function(a, b){return a.index - b.index});

将按索引对数组进行排序

答案 2 :(得分:1)

我建议事先对数组进行排序,然后按数组的索引进行访问。

原因

  • 易于维护,具有更多的数组元素
  • 易于按需要的顺序访问
  • 代码即易于理解,而不是有一些代码,原因不明显,需要解释
  • 访问速度很快,而不必总是从头开始遍历数组以获取下一个项目。

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);

答案 3 :(得分:1)

排序将花费O(n + log(n))时间,而if-else-if-else将花费O(n 2 )时间。因此排序是更好的选择。