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

Javascript 如何将JSON对象的第一个元素移动到末尾?,javascript,jquery,json,Javascript,Jquery,Json,嗨,我有这样的JSON: [ "supplier" : "Apple", "features" : { "0": [ { "feature_id": "58d1b42ec2ef165bbfca0873", "symbol": "tick" }, { "feature_id": "58d4b843bd966f52093ce32f", "symbol":

嗨,我有这样的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将features对象键“0”移动到键“0”之后的末尾?我尝试使用array.push(array.shift());但它抛出错误,表示“array.shift()”不是函数。我猜.features不是数组,那么如何将对象移动到末尾?

是否有理由将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");

//现在功能[“0”]功能[“1”]

您的意思是说“在键“1”之后结束”而不是“在键“0”之后结束”吗?这是正确的。实际上,features是一个键名为“0”、“1”的对象……发布您尝试过的内容(代码)嗨,谢谢Dan,我刚刚通过删除索引键将对象更改为数组。现在我可以使用shift()。太棒了。很高兴听到这个消息!