我已经多次看到人们在谈论O(1)O(n)等问题,但是没人知道它的含义和作用方式。我尝试在线搜索它,但不知道要使用哪些关键字。

这些是什么意思,以及如何应用于情况?

请考虑本问题的实质,使用这两个简单的示例以及我的问题。



宾语:


每个级别向内的时间/表演差异?
我的概念中.object['object']之间的区别
题?


pets.dogspets['dogs']

pets.dogs.colliepets['dogs']['collie']

pets.dogs.collie.sizepets['dogs']['collie']['size']




数组如何影响这一堆(如果我知道密钥)?


pets.dogs.collie.color[2]pets.dogs.collie.popularnames[56]




数组如何影响这一堆(如果我不知道键,并且在for循环中)?


pets.dogs.collie.color[i]pets.dogs.collie.popularnames[i]



var pets = {

    dogs: {
        chihuahua: {
            color: ["black", "white"],
            size: "tiny",
            hunting: false,
            popularnames: [ /*100 names*/ ]
        },
        collie: {
            color: ["brown", "white"],
            size: "medium",
            hunting: false,
            popularnames: [ /*100 names*/ ]
        },
        // etc
    },
    cats: {
        bengal: {
            color: ["gray", "white"],
            size: "medium",
            fur: "short",
            popularnames: [ /*100 names*/ ]
        },
        birman: {
            color: ["black", "white"],
            size: "medium",
            fur: "long",
            popularnames: [ /*100 names*/ ]
        },
        // etc
    }
}


底线问题:


我应该避免使用复杂的对象(例如,很多选择器)并使用多个简单的选择器吗?
如果迭代对象内部的深3-4级数组,数组迭代性能会变差吗?




数组:


每个级别向内的时间/演奏差异(如果我知道按键)?


pets[0]

pets[0][1]

pets[0][1][3]




对象如何影响这堆对象(如果我知道密钥)?


pets[0][1][1]['somekey']



var myArray = [

    0: [
        0: [
            0: [ /* 100 objects */ ],
            1: [ /* 100 objects */ ],
            2: [ /* 100 ints */ ],
            3: [ /* 100 ints */ ]
        ],
        1: [
            0: [ /* 100 objects */ ],
            1: [ /* 100 objects */ ],
            2: [ /* 100 ints */ ],
            3: [ /* 100 ints */ ]
        ],
        // etc
    ],
    1: [
        0: [
            0: [ /* 100 objects */ ],
            1: [ /* 100 objects */ ],
            2: [ /* 100 ints */ ],
            3: [ /* 100 ints */ ]
        ],
        1: [
            0: [ /* 100 objects */ ],
            1: [ /* 100 objects */ ],
            2: [ /* 100 ints */ ],
            3: [ /* 100 ints */ ]
        ],
        // etc
    ]
]


底线问题:


我应该避免使用复杂的数组(例如,许多级别),而是使用多个简单的数组吗?

最佳答案

有关您对O(1),O(n)的问题的深入解释,请参见此wikipedia article on Big_O_notation

Javascript中的数组不是关联的,因为Javascript中的所有内容都是对象。我发现Javascript Garden是良好实践的很好参考。

也许我只是懒惰,但我倾向于养成使数组尽可能“浅”的习惯。就像De La Soul关节一样,“ 3是魔幻数字”对我而言。 ;)

关于javascript - 数组和对象的复杂性以及“选择器”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34933032/

10-10 22:18