JavaScript变量中存储的JSON数组反转

8

我有一个以以下格式存储在变量中的JSON数组:

{"info": 
[ {"typeid": "877", "recid": "10", "repeaterid": "0",  "pageid": "26966", "maxrecords": "1"},
  {"typeid": "877", "recid": "11", "repeaterid": "0",  "pageid": "26966", "maxrecords": "1"},
  {"typeid": "459", "recid": "3", "repeaterid": "0",  "pageid": "26966", "maxrecords": "1"},
  {"typeid": "459", "recid": "4", "repeaterid": "0",  "pageid": "26966", "maxrecords": "1"},
  {"typeid": "456", "recid": "5", "repeaterid": "0",  "pageid": "26966", "maxrecords": "1"},
  {"typeid": "456", "recid": "6", "repeaterid": "0",  "pageid": "26966", "maxrecords": "1"}
]}

我想反转info内部的JSON数组。像这样:
{"info": 
[ {"typeid": "456", "recid": "6", "repeaterid": "0",  "pageid": "26966", "maxrecords": "1"},
  {"typeid": "456", "recid": "5", "repeaterid": "0",  "pageid": "26966", "maxrecords": "1"},
  {"typeid": "459", "recid": "4", "repeaterid": "0",  "pageid": "26966", "maxrecords": "1"},
  {"typeid": "459", "recid": "3", "repeaterid": "0",  "pageid": "26966", "maxrecords": "1"},
  {"typeid": "877", "recid": "11", "repeaterid": "0",  "pageid": "26966", "maxrecords": "1"},
  {"typeid": "877", "recid": "10", "repeaterid": "0",  "pageid": "26966", "maxrecords": "1"}
]}

我该如何实现这个呢?

enter image description here


1
你想对数组进行排序还是仅仅翻转它? - Eric Herlitz
5个回答

21

使用 JavaScript 的数组reverse方法:

var objAssetSelection = $.parseJSON(strAssetSelection);
objAssetSelection.info.reverse();
console.log(objAssetSelection);

1
获取信息时出现未定义。 - Milind Anantwar
你已经用包含对象的实际变量名替换了 var 吗? - Barmar
啊,你还没有将JSON解析为对象。 - Barmar
我的错...谢谢barmar。那非常有帮助。最后一个问题是,是否可以根据pageid反转数组并对其进行排序? - Milind Anantwar
你可以随意操作数组。Javascript有一个sort函数,ojovirtual的回答展示了如何使用它。 - Barmar
显示剩余2条评论

6

获取“info”时出现未定义的情况。 - Milind Anantwar

2

2

只需要使用 JQuery:

function test() {
    var myArray = [1, 2, 3, 4];
    var myReversedArray = new Array();
    $(myArray).each(function (key) {
        myReversedArray.unshift(myArray[key]);
    });
    myArray = myReversedArray;
    $(myArray).each(function (key) {
        console.log(myArray[key]);
    });
}

请注意,我的解决方案可能不是最快的,但我认为它是最简单的。我将其与以下所有内容进行了比较: http://jsperf.com/js-array-reverse-vs-while-loop/20 结果是:53,390,542±1.33%,比其他方法慢85%。 - To delete profile

0

成功地将JSON数组转换为反向JSON数组,101%有效

var ActualArray = [{
        "bag":'large',
        "color":'blue'
    },{
        "bag":'small',
        "color":'red'
    },{
        "bag":'medium',
        "color":'green'
    },{
        "bag":'large',
        "color":'pink'
    }]
    var ReverseArray = [];
    var length = ActualArray.length;
    for(var i = length-1;i>=0;i--){
        ReverseArray.push(ActualArray[i]);
    }
    console.log("actual array");
    console.log(JSON.stringify(ActualArray));
    console.log("reverse array");
    console.log(JSON.stringify(ReverseArray));

你的日志将会像下面这样

actual array
[{"bag":"large","color":"blue"},{"bag":"small","color":"red"},{"bag":"medium","color":"green"},{"bag":"large","color":"pink"}]
reverse array
[{"bag":"large","color":"pink"},{"bag":"medium","color":"green"},{"bag":"small","color":"red"},{"bag":"large","color":"blue"}]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接