【问题标题】:Reindex javascript array / object after removing a key删除键后重新索引javascript数组/对象
【发布时间】:2012-01-08 18:19:45
【问题描述】:

例如:

var Cars = {
    1: { "Make": "Honda",
         "Model": "Accord",
         "Color": "Red"
    },
    2: { "Make": "Honda",
         "Model": "Civic",
         "Color": "Silver"
    },
    3: { "Make": "Honda",
         "Model": "Jazz",
         "Color": "Yellow"
    }

如果我执行delete.Cars[2];,我将留下 Cars[1] 和 Cars[3]。

我需要一种方法(JS 或 jQuery),这样当我删除一个键时,对象会重新索引。因此,在上面的示例中,我剩下的是 Cars[1] 和 Cars[2](即 Cars[3])。

【问题讨论】:

  • 您有没有使用实际数组的原因?
  • 如果你使用数组,这个问题有你的答案-stackoverflow.com/questions/500606/…
  • 因为不能有多个维度,我刚查了。
  • 但是你没有多个维度:D
  • 你可以有一个数组数组,或者一个对象数组。 (因此,无论您在哪里检查并没有提供所有信息。)

标签: javascript jquery


【解决方案1】:

那是因为你不需要数组的键。

var Cars = [
    {
        "Make": "Honda",
        "Model": "Accord",
        "Color": "Red"
    },{
        "Make": "Honda",
        "Model": "Civic",
        "Color": "Silver"
    },{
        "Make": "Honda",
        "Model": "Jazz",
        "Color": "Yellow"
    }
];

alert(Cars[1]['Make']); // Honda

【讨论】:

  • 但是如果我有这样的数组 [ {key:"label", sortable:true, resizeable:true}, {key:"notes", sortable:true,resizeable:true},.. ....班次后,它从第二个参数开始。索引 = 1
【解决方案2】:

你可以看看这个:

数组: Javascript - Reindexing an array

对象: Algorithm to re-index an array of objects after insertion or drag 'n' drop order change

它应该可以解决问题:)

参考这个线程中的其他开发人员,以及我自己,使用 Array 会更好。

【讨论】:

  • 不是。停止使用它们并改用 Array。 (好吧,事实上,如果你使用Array.prototype.splice.call(theStrangeObject, 2, 1) 而不是delete theStrangeObject[2],它会有所帮助......但不,它没有帮助,你没有length。使用数组)。
猜你喜欢
  • 2021-04-11
  • 1970-01-01
  • 1970-01-01
  • 2017-06-22
  • 2011-11-29
  • 2017-09-14
  • 1970-01-01
  • 2011-07-10
  • 2019-07-23
相关资源
最近更新 更多