排序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});