0

我正在尝试找出一种方法来更改具有其他一些对象的对象的索引,该对象也带有键。假设我想将密钥作为 3(C) 传递给函数,然后我想在与 3(C) 相同的对象中找到一个密钥并将其索引设为 0

我尝试使用 hasOwnProperty,但只有当我通过 3(C) 时,它总是给我真实的。我尝试了大多数事情,但在嵌套数组的情况下失败了

{
  "1(C)": {
    "STORE (06:00 )": [
      {
        "personId": "---",
        "scheduledEventId": "----",
        "employeeName": "----.",
        "phoneNumber": "-----",
        "ranking": "-----",
        "perAph": "----",
        "distPerAph": "--",
        "distanceToEvent": "0"
      }
    ]
  },
"3(C)": {
    "THUdx (06:00 )": [
      {
        "personId": "---",
        "scheduledEventId": "----",
        "employeeName": "----.",
        "phoneNumber": "-----",
        "ranking": "-----",
        "perAph": "----",
        "distPerAph": "--",
        "distanceToEvent": "0"
      }
    ]
  }
}

预期的结果应该在索引 0 处有 3(C) 对象

{
"3(C)": {
    "THUdx (06:00 )": [
      {
        "personId": "---",
        "scheduledEventId": "----",
        "employeeName": "----.",
        "phoneNumber": "-----",
        "ranking": "-----",
        "perAph": "----",
        "distPerAph": "--",
        "distanceToEvent": "0"
      }
    ]
  },
  "1(C)": {
    "STORE (06:00 )": [
      {
        "personId": "---",
        "scheduledEventId": "----",
        "employeeName": "----.",
        "phoneNumber": "-----",
        "ranking": "-----",
        "perAph": "----",
        "distPerAph": "--",
        "distanceToEvent": "0"
      }
    ]
  }
}
4

1 回答 1

0

您可能以错误的方式做某事,并且不可能按照标准去做您想要完成的事情。

但是,至少在 Chrome 中,对象中键的顺序似乎是通过定义键的顺序来定义的,这样的事情可以通过创建一个新对象,首先复制您想要在第 0 位置拥有的成员,然后复制剩下的所有成员。

function moveToFirst(src, key) {
  var keys = Object.keys(src);
  var temp = {};
  temp[key] = src[key];
  for (var k = 0; k < keys.length; ++k){
    if (keys[k] !== key) {
      temp[keys[k]] = src[keys[k]];
    }
  }
  return temp;
}
var foo = {c: "1", a: 5, bar: "lol"}
foo = moveToFirst(foo, "a");  // {a: 5, c: "1", bar: "lol"}
于 2019-06-03T10:13:21.000 回答