在JavaScript函数之后保留原始数组

Rob*_*ert 4 javascript arrays

我确信有一个简单的答案,虽然我只有PHP的经验.为什么"披萨"阵列在我将其传递给我的"my_pizza"功能时只会更改为"my_pizza"?如何将原始数组保存到函数外部的函数中?功能运行完毕后,披萨阵列应该没有改变.我注意到,如果我更改了我的字符串变量(pie),它将在函数运行后保持不变,与数组不同.

简而言之,我希望第一组结果与第二组完全相同.

var pizza = [];
pizza.push('crust');
pizza.push('ham');

var pie = "apple"

function bake_goods(my_pizza, my_pie){
    console.log(my_pizza);
    console.log(my_pie);

    delete my_pizza['1'];
    my_pie = "peach";

    console.log(my_pizza);
    console.log(my_pie);
}

//first run

bake_goods(pizza, pie);
//console logs
//['crust','ham']
//apple

//['crust']
//peach

//second run

bake_goods(pizza, pie);
//console logs
//['crust']
//apple

//['crust']
//peach
Run Code Online (Sandbox Code Playgroud)

Rap*_*aus 6

你应该在你的函数中克隆(创建一个)你的数组

function bake_goods(my_pizza, my_pie){
    var innerPizza = my_pizza.slice(0);
    console.log(innerPizza);
    console.log(my_pie);

    delete innerPizza ['1'];
    my_pie = "peach";

    console.log(innerPizza );
    console.log(my_pie);
}
Run Code Online (Sandbox Code Playgroud)