为什么在有效索引位置删除时,splice方法返回undefined?

时间:2013-06-07 16:53:54

标签: javascript jquery

为什么splice方法返回undefined并且不会删除以下代码中位置4的元素:

var excludedDepartmentsList = [1, 2, 3, 4, 5, 6];
var currentDepartmentId = 5;

var position = $.inArray(currentDepartmentId, excludedDepartmentsList);

if (position > -1) {
    var q = excludedDepartmentsList.splice[position, 1];
    return;
}

我在这里做了一个测试:http://jsfiddle.net/PnVEb/

4 个答案:

答案 0 :(得分:13)

.splice是一个函数,它应该像excludedDepartmentsList.splice(position, 1)而不是excludedDepartmentsList.splice[position, 1]一样调用。请注意,括号已从[]更改为()

使用下面的(),它应该返回5

excludedDepartmentsList.splice(position, 1)

固定小提琴: http://jsfiddle.net/PnVEb/1/

答案 1 :(得分:3)

[]不等于()

var q = excludedDepartmentsList.splice[position, 1];
                                      ^           ^

答案 2 :(得分:2)

你的语法有点不对劲。您为拼接功能键入[]但它应该是()

[]用于大多数编程语言的数组,()用于函数/方法。

此外,您必须返回q

if (position > -1) {
    var q = excludedDepartmentsList.splice(position, 1);
    return q;
}

答案 3 :(得分:1)

在splice方法中使用man(),而不是[]