0

我有这样的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

4 回答 4

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;
    }
 }
}
于 2012-04-30T08:23:02.740 回答
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 移到顶部。调整排序功能以满足您的需求。

于 2012-04-30T08:20:47.077 回答
0

假设它们在一个数组中,这里有一个演示

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;
        }
    }
}
于 2012-04-30T08:24:15.217 回答
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/

于 2012-04-30T08:27:30.403 回答