繁体   English   中英

如何将JSON对象的第一个元素移到末尾?

[英]How to move first element of the JSON object to the end?

嗨,我有这样的JSON:

[
  "supplier" : "Apple",
  "features" : {
      "0": [
        {
          "feature_id": "58d1b42ec2ef165bbfca0873",
          "symbol": "tick"
        },
        {
          "feature_id": "58d4b843bd966f52093ce32f",
          "symbol": "cross"
        }
      ],
      "1":[
        {
          "feature_id": "58d1b42ec2ef165bb33422087",
          "symbol": "tick"
        },
        {
          "feature_id": "58d4b843bd91ads2jfloice32",
          "symbol": "cross"
        }

      ]
  },
  "supplier" : "Orange",
  "features" : {
      "0": [
        {
          "feature_id": "58d1b42ec2ef165bbfca0873",
          "symbol": "tick"
        },
        {
          "feature_id": "58d4b843bd966f52093ce32f",
          "symbol": "cross"
        }
      ],
      "1":[
        {
          "feature_id": "58d1b42ec2ef165bb33422087",
          "symbol": "tick"
        },
        {
          "feature_id": "58d4b843bd91ads2jfloice32",
          "symbol": "cross"
        }

      ]
  }
]

如何使用jQuery / javascript将功能对象键“ 0”移动到键“ 0”之后的末尾? 我试图使用array.push(array.shift()); 但是它抛出错误,说“ array.shift()”不是一个函数。 我猜.features不是数组,那么如何将对象移到末尾?

要素是对象而不是数组是有原因的吗? 您可以执行以下操作:

"features" : [
      [
        {
          "feature_id": "58d1b42ec2ef165bbfca0873",
          "symbol": "tick"
        },
        {
          "feature_id": "58d4b843bd966f52093ce32f",
          "symbol": "cross"
        }
      ],
      [
        {
          "feature_id": "58d1b42ec2ef165bb33422087",
          "symbol": "tick"
        },
        {
          "feature_id": "58d4b843bd91ads2jfloice32",
          "symbol": "cross"
        }
      ]
  }

如果您只是计划使用数字作为键,那没有问题。 否则,您可以使用Object.keys(features)获得对象键的数组(在您的情况下为“ 1”,“ 2”,...),并在需要时使用它们引用对象。

使用临时变量交换

var data = {

  "supplier" : "Apple",
  "features" : {
      "0": [
        {
          "feature_id": "58d1b42ec2ef165bbfca0873",
          "symbol": "tick"
        },
        {
          "feature_id": "58d4b843bd966f52093ce32f",
          "symbol": "cross"
        }
      ],
      "1":[
        {
          "feature_id": "58d1b42ec2ef165bb33422087",
          "symbol": "tick"
        },
        {
          "feature_id": "58d4b843bd91ads2jfloice32",
          "symbol": "cross"
        }

      ]
  }
  };


function swap(obj,index1,index2){
    var temp = obj[index1];
    obj[index1] = obj[index2];
    obj[index2] = temp;
    return obj;
}

data.features = swap(data.features,"0","1");

//现在features [“ 0”] <==> features [“ 1”];

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM