在json数组中移动项目

时间:2012-04-30 08:16:04

标签: javascript json

我有像这样的json对象

[
  { "id":"1", "item1":"item1 text","item2":"item2text","item3":"item3text" },
  { "id":"2", "item1":"item1 text","item2":"item2text","item3":"item3text" }
]

我的问题是我希望通过传递元素的id将id 2移动到第一个位置。喜欢

function movetotop(id){
  //Code here to move id 2 to the top position 
}

希望有人帮忙。

问候

4 个答案:

答案 0 :(得分:4)

function moveIdToTop(jsonarray, id) {
 for (var i = 0; i < jsonarray.length; ++i) {
    if (jsonarray[i].id == id) {
       var temp = jsonarray[i];
       jsonarray.splice(i, 1);
       jsonarray.unshift(temp);
       break;
    }
 }
}

答案 1 :(得分:2)

如果您有一个对象数组,请使用sort方法:

var data = [
 { "id":"1", "item1":"item1 text","item2":"item2text","item3":"item3text" },
 { "id":"2", "item1":"item1 text","item2":"item2text","item3":"item3text" }
];

var sorted = data.sort(function(a, b) {
    return a.id < b.id;
});

这将把2移到顶部。调整排序功能以满足您的需求。

答案 2 :(得分:0)

假设它们在数组中,here's a demo

function popTop(arr, id) {
    var i, al = arr.length;
    dance: for (i = 0; i < al; i++) {
        if (arr[i].id == id) {
            arr.unshift(arr.splice(i, 1)[0]);
            break dance;
        }
    }
}

答案 3 :(得分:0)

您需要从数组中提取元素并将其作为第一个重新插入。

var yourarray = [{ "id":"1", "item1":"item1 text","item2":"item2text","item3":"item3text" }, 
                 { "id":"2", "item1":"item1 text","item2":"item2text","item3":"item3text" }];

function movetotop(id){
    //Code here to move id 2 to the top position
    var index = yourarray.map(function(element){return element.id;}).indexOf(id);
    if (index > -1) {
        var extracted = yourarray.splice( index,1 )[0];
        yourarray.unshift(extracted);
    }
}

movetotop('2');

一起使用

http://jsfiddle.net/gaby/NGjXy/

演示