用下划线重新排序集合

时间:2011-12-01 08:52:24

标签: javascript underscore.js

我很擅长强调我的无知。

是否有快速简便的方法来执行以下操作:

men:{gerald:{"name":"Gerald", "age":50},mike:{"name":"Mike", "age":50},charles:{"name":"Charles", "age":50}}

名称为Mike - 设置在位置1(索引0)

我只想将这些项目随机播放,以便第一项由我选择的名称设置。

任何帮助都超过欢迎。

2 个答案:

答案 0 :(得分:1)

由于_.suffle会对所有元素进行混洗,因此您需要拼接除预定义元素之外的所有元素,将它们混合,并将混洗元素连接到包含预定义元素的现有数组。

类似的东西:

var orig = [1, 2, 3, 4, 5],
    shuffled = [];

shuffled[0] = orig[2]; // 3 is the predefined element

shuffled = shuffled.concat( _.shuffle( orig.slice(0,2).concat( orig.slice(3) ) ) );

获取没有预定义元素的数组,将其混洗,并将其连接到shuffled数组,该数组包含预定义变量作为其第一个元素。

答案 1 :(得分:0)

您不需要underscore.js。 Array.sort会很好:

myJson.men.sort(function(a, b) { return b.name == "Mike" })

这不是排序的模型用法,但它确实起到了作用。


此外,您的JSON无效。你需要在数组周围使用方括号,而不是curlies:

{
    "men": [{
        "name": "Gerald", "age": 50
    },{
        "name": "Mike", "age": 50
    },{
        "name": "Charles", "age": 50
    }]
}


编辑:

你无法“订购”那个JSON。你要做的是订购一个关联数组。这没有任何意义。如果项目的顺序很重要,那么您需要一个数组,而不是一个对象。

相关问题