在删除一个键之后重新索引JavaScript数组/对象

11
例如:
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])。

6
你为什么不使用真正的数组? - Richard Dalton
但你没有多个维度 :D - Richard Dalton
1
你可以拥有一个数组的数组,或者一个对象的数组。(所以无论你检查了哪里都没有给出所有信息。) - nnnnnn
http://jsfiddle.net/jdb1991/vfaZt/ 如果是数组就不起作用。 - joedborg
我通过在jsfiddle中输入代码,得出了...,现在我正在寻求解决方案。 - joedborg
显示剩余3条评论
2个回答

7
那是因为您不需要该数组的键。
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。 - fdrv

4

1
不要再使用它们,而是使用Array。 (实际上,如果您使用Array.prototype.splice.call(theStrangeObject,2,1)而不是delete theStrangeObject [2]可能会有所帮助...但不,这并没有帮助,因为您在那里没有“长度”。使用Array)。 - user1046334

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