排序vs if else if在javascript中选择哪一个?

排序vs if else if在javascript中选择哪一个?,javascript,arrays,sorting,if-statement,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: "Pathwa

我有一个场景,在这个场景中,我需要按索引号的递增顺序显示数据

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-else-if条件

if(index === 0){

}else if (index === 1){

}else if (index === 2){

}else if (index === 3){

}


我建议提前对数组进行排序,然后根据数组的索引进行访问

原因

  • 使用阵列中的更多元素易于维护
  • 以通缉顺序易于访问
  • 代码ie容易理解,而不是有一些代码,原因不明显,需要解释
  • 访问速度很快,而不是总是从一开始就迭代数组以获取下一项
var myArray=[{custom_carousel:false,default_标签:“智能卡”,索引:3,可见:true},{custom_carousel:false,default_标签:“路径”,索引:2,可见:false},{custom_carousel:false,default_标签:“路径”,索引:1,可见:false},{custom_carousel:false,default_标签:“路径”,索引:0,可见:false}]
排序({index:a},{index:b})=>a-b);

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

您可以使用基于
索引
值的
排序
方法:

myArray=[
{custom_carousel:false,默认_标签:“路径”,索引:2,可见:false},
{自定义旋转木马:false,默认标签:“智能卡”,索引:3,可见:true},
{自定义旋转木马:false,默认标签:“路径”,索引:1,可见:false},
{custom_carousel:false,默认_标签:“路径”,索引:0,可见:false}
]
log(myArray.sort((a,b)=>a.index-b.index))

将按索引对数组进行排序

。显然,排序
。如果您的阵列中有更多项目,该怎么办?每次发生这种情况时,您是否要去更改代码并添加更多的
if
s?“2次或更多次?做一个循环。”只需使用
myArray.sort((a,b)=>a.index-b.index)
并在它们之间循环,以获取您需要的任何内容。可能是重复的,我已经在上面进行了评论,但再次阅读时我有点困惑。您将如何使用
if/else
进行排序?@adiga这不是一个重复的问题。我需要知道哪一个应该被优先考虑。我不是-1,但为什么复杂性甚至是一个问题呢?作者问他们必须选择哪一个。我给出一个理由。
myArray.sort(function(a, b){return a.index - b.index});