Javascript拼接不拼接

标签 javascript arrays object splice

tl;博士;即使没有我的解释,人们也可以查看下面的代码和输出,发现有些可疑之处。 Splice 返回它拼接的索引,但数据保留在数组中。

所以我有一个对象,它的键控几乎就像一个数组(0,1,2,3...等)。每个对象键都有一个数组值。数组是对象的数组。这是一个简化的对象,显示了我正在使用的基本结构:

obj = {
    '1': [{},{},{},{}],
    '2': [{},{},{},{}],
    '3': [{},{},{},{}]
};

我有一些代码需要从这些数组之一中拼接出其中一个数组索引(对象)。这是代码,控制台记录了所有内容(我将在下面显示输出)。

console.log(indices_to_remove);
for(j = 0; j < indices_to_remove.length; j++) {
    console.log("i: " + i)
    console.log('j: ' + j)
    console.log(this._index);
    console.log(this._index[i].splice(indices_to_remove[j], 1));
    console.log(this._index);
}

关于第二个“console.log(this._index);”的通知拼接后的对象仍然是原始数组的一部分。我假设 this._index[2] 现在会少一项。另外,我应该拼接索引 0,但它返回索引 1。

这是输出: Console

因此,如果有人对我可能做错了什么有任何见解,请大声说出来!

谢谢, 迈克

最佳答案

您所显示的代码中缺少很多内容,因此我不得不进行一些猜测。我运行了这段代码,它按预期工作:

var obj = {
    '1': [{},{},{},{}],
    '2': [{},{},{},{}],
    '3': [{},{},{},{}]
};

var indices_to_remove = [1];

var i = 1;
alert(indices_to_remove);
for(j = 0; j < indices_to_remove.length; j++) {
    alert("i: " + i)
    alert('j: ' + j)
    alert(obj[i]);
    alert(obj[i].splice(indices_to_remove[j], 1));
    alert(obj[i]);
}

但是,您应该考虑在要删除的索引数组中向后循环。删除第一个项目后,第二个项目现在是第一个项目。如果您随后删除第二个项目,那么它实际上是您删除的第三个项目。

关于Javascript拼接不拼接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1872251/

相关文章:

javascript - 迭代数组以获得一个值。

javascript - 在 JQuery 中使用数组添加和删除表的元素

php - 如何循环遍历数组并在到达末尾时重新开始?

javascript - 合并具有相同值的对象中的 JavaScript 对象

python - python中的最小堆

mysql - PHP PDO 简洁的 mySQL SELECT 对象

javascript - html5如何制作随机背景色

javascript - DOM 更改不会立即执行

Java练习——用二维数组显示表格

python - 读取文件行并在数字之前获取单词