在保留键的同时随机播放对象数组

时间:2014-03-28 15:27:10

标签: javascript arrays object

我正在开发一个项目,我需要在DOM上准备一个对象数组,同时还要保留密钥。

示例:

     var o = [
    {"key_1": {
        "bruce wayne": "batman"
    }},
    {"key_2": {
        "peter parker": "spiderman"
    }},

    {"key_3": {
        "bruce banner": "hulk"
    }}
];

后:

var o = [
    {"key_3": {
        "bruce banner": "hulk"
    }},
    {"key_1": {
        "bruce wayne": "batman"
    }},

    {"key_2": {
        "peter parker": "spiderman"

    }}
];

我尝试过几种不同的方法,但没有成功。在这一点上,我也不确定这是否是最佳方法。

附加信息:应用程序必须遍历数组,一次显示一个键集。

- 欣赏任何方向,

3 个答案:

答案 0 :(得分:1)

首先修复 o ,这是不正确的:

var o = [
    {"key_1": {
        "bruce wayne": "batman"
    }},
    {"key_2": {
        "peter parker": "spiderman"
    }},

    {"key_3": {
        "bruce banner": "hulk"
    }}
];

Now using the shuffle from this answer:

function shuffle(o){ 
    for(var j, x, i = o.length; i; j = Math.floor(Math.random() * i), x = o[--i], o[i] = o[j], o[j] = x);
    return o;
};

你这样称呼它:

o = shuffle(o);

答案 1 :(得分:0)

您需要一个实际的数组(而不是语法错误):

var o = [
    {
        "key": 1,
        "bruce wayne": "batman"
    },
    {
        "key": 2,
        "peter parker": "spiderman"
    },
    {
        "key": 3,
        "bruce banner": "hulk"
    }
]

您可以shuffle that easily并保留密钥。

答案 2 :(得分:0)

您的数组有语法错误。似乎你想要对象而不是数组,或者因为对象没有顺序,所以对象数组:

var o = [
    {
        "key_1": {"bruce wayne": "batman"}
    },
    {
        "key_2": {"peter parker": "spiderman"}
    },
    {
        "key_3": {"bruce banner": "hulk"}
    }
];
shuffle(o);

shufflethis answerthis one中定义的函数。

现在您的数组将类似于

[
    {
        "key_3": {"bruce banner": "hulk"}
    },
    {
        "key_2": {"peter parker": "spiderman"}
    },
    {
        "key_1": {"bruce wayne": "batman"}
    }
];