我是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
的值会发生变化吗?
谢谢!
答案 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);