我不确定这是否是一个重复问题,但我正在努力想出在填充有元素数组的数组中移动元素的最佳方法。
例如:
var foo = [
[ {obj: 1}, {obj: 2}, {obj: 3}, {obj: 4} ],
[ {obj: 5}, {obj: 6}, {obj: 7}, {obj: 8} ],
[ {obj: 9}, {obj: 10}, {obj: 11}, {obj: 12} ]
];
如果我根据数组下标删除一个元素,它将删除该元素,然后将所有后续元素向下移动到适当的数组位置。例如,如果我删除obj 3,则结果如下:
var arrayIndex = 0;
var objIndex = 2;
var bar = foo[arrayIndex].splice(objIndex, 1);
结果:
bar = [
[ {obj: 1}, {obj: 2}, {obj: 4}, {obj: 5} ],
[ {obj: 6}, {obj: 7}, {obj: 8}, {obj: 9} ],
[ {obj: 10}, {obj: 11}, {obj: 12} ]
];
另一个例子是如下所示,删除 obj 8:
var arrayIndex = 1;
var objIndex = 3;
var bar = foo[arrayIndex].splice(objIndex, 1);
结果:
bar = [
[ {obj: 1}, {obj: 2}, {obj: 3}, {obj: 4} ],
[ {obj: 5}, {obj: 6}, {obj: 7}, {obj: 9} ],
[ {obj: 10}, {obj: 11}, {obj: 12} ]
];
对我来说,问题在于将所有前置元素移动到正确的数组位置。此外,我希望删除空数组。其中foo的长度会减少。foo也将被改变。
这是我尝试过的jsfiddle: https://jsfiddle.net/mLw8kncn/1/ 任何帮助都将不胜感激。
foo
中删除,还是保留为空数组?结果是否应该是一个新数组,而foo
保持不变,还是foo
应该被改变? - 1983