我可以修改作为参数传递的数组吗?

时间:2017-07-04 22:14:45

标签: javascript

与标题一样,我可以修改作为参数传递的数组吗? (不使用return

function arrayElementsRemove(array, element) {
    array.filter(item => item != element);
}

然后

it('should remove items from array', () => {
    var array = [1,2,2,3];
    arrayElementsRemove(array, 3);
    expect(array).to.equal([1,2,2]); // fails, array still equals [1,2,2,3]
});

1 个答案:

答案 0 :(得分:3)

数组作为参考传递。您的问题是Array.filter不会更改原始数组,而是返回一个新数组。

而不是Array.filter,您应该从length-10进行循环,并在element === array[i]使用Array.splice删除该项时。

您的arrayElementsRemove功能应如下所示:



var arr = [1, 2, 3, 2, 3];

function arrayElementsRemove(array, element) {
    for (var i = array.length-1; i >= 0; i--) {
        if (array[i] === element) {
            array.splice(i, 1);
        }
    }
}

arrayElementsRemove(arr, 3);

console.log(arr);




相关问题