通过函数参数重置数组

时间:2016-09-06 04:19:00

标签: javascript arrays function

我正在尝试通过函数参数重置数组。

这是我的代码:

<script>
fruitArray = ["apple", "banana", "orange", "pineapple"]
function newFruit(myArray){
    myArray=[];
}
newFruit(fruitArray)
alert(fruitArray[0])//Returns "apple"
</script>

我想清除数组,但它没有通过该函数。我不确定这条线:

myArray=[];

请帮助我学习这个。

谢谢。

4 个答案:

答案 0 :(得分:0)

这样做。将长度设置为0

myArray.length = 0

答案 1 :(得分:0)

您没有使用您所做的更改设置数组,您向newFruit函数发送数组,您更改它但这与您的 {{1无关}}

所以你要做的就是从函数fruitArray更改数组,从函数return set使用数组fruitArray returned,如下所示:

    fruitArray = ["apple", "banana", "orange", "pineapple"]
    function newFruit(myArray){
       myArray = [];
       return myArray;
    }
    fruitArray = newFruit(fruitArray);
    alert(fruitArray[0]);//Returns "undefined" because there is no a [0] place in the fruitArray.
    alert(fruitArray);//Returns ""-empty array.

顺便提一下您的代码遗失;

您也可以这样清除阵列:

fruitArray.length = 0

答案 2 :(得分:0)

user3378165给出了正确答案:

<script>
fruitArray = ["apple", "banana", "orange", "pineapple"];
function newFruit(myArray){
  myArray.length = 0;
}
newFruit(fruitArray);
alert(fruitArray[0]);//Returns "apple"
</script>

实际上,问题是by value主题,您可以了解更多here实际上,这意味着如果您更改参数本身(就像您所做的那样),那就赢了&# 39; t影响送入参数的项目。但是如果你改变参数的内部(array.length = 0),它会传播回来

答案 3 :(得分:-1)

在javascript中没有通过引用传递的概念。您可以通过引用函数传递对象文字。

fruitObj = new Object;
fruitObj.fruits = ["apple", "banana", "orange", "pineapple"];
function newFruit(myObj) {
    myObj.fruits = [];
}
newFruit(fruitObj);
alert(newFruit.fruits); // alerts an empty array