为变量赋值会更改右侧的值

时间:2016-08-24 16:08:34

标签: javascript

我是JavaScript的新手,觉得我必须遗漏一些基本的东西!

我正在创建一个对整数列表list进行排序并返回最小值listSort[0]的函数。

function sortNumber(a,b) {
    return a - b;
}

var min = function(list){
    console.log(list[0]);
    var listSort = list.sort(sortNumber);
    console.log(list[0]);
    console.log(listSort[0]);
    return list[0];
}

有人可以解释为什么list[0]的{​​{1}}分配给list.sort(sortNumber)listSort的值会发生变化吗?

谢谢!

3 个答案:

答案 0 :(得分:0)

要获得数组的最小值,请更好地使用Math.min

var list = [4,2,4,2,6,5,2,4,3,5,2];

var min = Math.min.apply(null, list);

答案 1 :(得分:0)

如果我是对的,那是因为当你使用你的作业时,你正在执行list.sort(sortNumber),所以按照赋值函数列出改变。

Sooo ...这样读: - list.sort(sortNumber)=>列表更改 - 列表分配给listSort

尽管如此,我认为你会找到最小值。 :P

答案 2 :(得分:0)

sort()函数直接更改应用的数组。例如:

myArray.sort();

直接更改myArray的内容。 如果您不想更改原始数组的内容,则需要使用克隆函数:

function mySortingFunction(list){
   var newList = myCloningFunction(list);
   newList.sort();
   return newList;
}

克隆数组的方法有以下几种: Javascript fastest way to duplicate an Array - slice vs for loop

如果你使用AngularJS,你可以简单地写:

var newList = angular.copy(list);