jquery json ..排序数据数组自定义列表..怎么样?

时间:2014-01-24 00:49:52

标签: javascript jquery json

我希望按数组排序值

例如

var objName = [{id:1, name:"one"},{id:2, name:"two"}, {id:3, name:"three"}];
var sortById = [1,3,2];

我想按此顺序输出

1 one
3 three
2 two

4 个答案:

答案 0 :(得分:2)

objName元素填充到由id索引的哈希(即对象)中,然后将map sortById数组填充到哈希值上。

确切的代码留给读者练习。

答案 1 :(得分:0)

sorted=new Array()
for(var id_index=0;id_index<sortById.length;id_index++)
{
    for(var obj_index=0;obj_index<objName.length;obj_index++){
        if (objName[obj_index].id===sortById[id_index]) sorted.push(objName[obj_index])
    }
}
//now sorted is the new sorted array. if you want to overwrite the original object:
objName=sorted;

答案 2 :(得分:0)

假设两个数组的长度相同,您可以先创建一个哈希:

var objName = [{id:1, name:"one"},{id:2, name:"two"}, {id:3, name:"three"}];
var myHash = {};
for(var i = 0; i<objName.length;i++){
    myHash[objName[i].id] = objName[i];
}

获得此哈希后,您可以遍历您的密钥数组并获取值:

var sortById = [1,3,2];
var sortedArray = [];
for(var i = 0; i<sortById.length;i++){
    sortedArray.push(myHash[sortById[i]]);
}

答案 3 :(得分:0)

清晰可读(主观,可能不适合所有人):

var result = [];
sortById.forEach(function(id) {
    result = result.concat(objName.filter(function(i) {
        return i.id == id;
    }));
});

JSFiddle:http://jsfiddle.net/RLH6F/

实施只是为了好玩。

警告:O(n^2)

PS:我同意最好不要在没有代码的情况下给出食谱,但只要社区成员已经提供了复制粘贴解决方案,我就决定提供至少一个漂亮的食谱。