JavaScript 数组拼接

7

我有一个对象数组,想要移除其中的某个元素。然而,splice方法似乎返回的是被移除的元素,而不是移除目标元素后的新数组。

以下是我的代码:

var TheArray = TheObject.Array;
TheArray = TheArray.splice(TheIndex, 1); //TheIndex is the index of the element I want to remove
TheObject.Array = TheArrray;

当我调试并运行此代码时,TheObject.Array包含我想要删除的元素。我哪里做错了?感谢您的建议。

1
可能是重复问题:https://dev59.com/UXRB5IYBdhLWcg3wz6ed - Colin Brock
1
这不是那个问题的副本。 - Kevin Anthony Oppegaard Rose
3个回答

16

splice方法返回被移除的元素,但是会修改其调用者本身。因此,在你的例子中,TheArray被直接更新并且不应该包含被移除的元素。

下面是一个更为具体、简化的使用 splice 方法的例子:

var myArr = ["a", "b", "c", "d"];
var elem = myArr.splice(2, 1);
// elem  => ["c"]
// myArr => ["a", "b", "d"]

9

您正在将TheArray的值设置为要删除的项的值。

请按照以下方式重写您的代码:

var TheArray = TheObject.Array;
TheArray.splice(TheIndex, 1); //TheIndex is the index of the element I want to remove
TheObject.Array = TheArrray;

2
这三行代码可以被替换为 TheObject.Array.splice(TheIndex,1) - Narendra Yadala
确实可以,但我希望保持解决方案尽可能简单易懂。提问者现在应该知道不必再费心TheArray=代码的部分了。然后他就可以自己解决剩下的问题。 :) - Kevin Anthony Oppegaard Rose

0

在你的数组上执行一个alert,确保该数组是正确的。此外,你可能需要在变量周围使用parseInt()(例如TheArray = TheArray.splice(parseInt(TheIndex), 1);)以确保它被设置为整数而不是字符串 :)

我希望这可以帮助到你。


那么至少使用parseInt(..., 10) - pimvdb

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