Javascript 为什么连接和排序方法行为怪异?2.本质上相同的方法不会以相同的方式起作用
我正在研究FCC挑战,学习JS。这是我面临的最大挑战 我解决了这个问题,但是一个代码应该可以工作,而另一个则不行,我假设它们本质上是一样的 这是一个有效的代码:Javascript 为什么连接和排序方法行为怪异?2.本质上相同的方法不会以相同的方式起作用,javascript,arrays,Javascript,Arrays,我正在研究FCC挑战,学习JS。这是我面临的最大挑战 我解决了这个问题,但是一个代码应该可以工作,而另一个则不行,我假设它们本质上是一样的 这是一个有效的代码: var globalArray = [5, 6, 3, 2, 9]; function nonMutatingSort(arr) { // Add your code below this line return [].concat(arr).sort(function(a, b) { return a - b; }
var globalArray = [5, 6, 3, 2, 9];
function nonMutatingSort(arr) {
// Add your code below this line
return [].concat(arr).sort(function(a, b) {
return a - b;
});
// Add your code above this line
}
nonMutatingSort(globalArray);
这个代码不起作用
var globalArray = [5, 6, 3, 2, 9];
function nonMutatingSort(arr) {
// Add your code below this line
let newArr = [];
newArr.concat(arr);
return newArr.sort(function(a,b){return a-b;});
// Add your code above this line
}
nonMutatingSort(globalArray);
我的问题是为什么?
这两个代码都将旧数组连接到新数组,并且两个函数都应该返回排序数组
然而,在第一个函数中,连接失败。。。它只返回空的arr。
为什么?我很困惑。它在函数外部工作,但在函数中不工作
concat
不会改变任何现有数组(调用函数的数组或参数列表中的数组)。调用concat
时,返回一个新数组。因此,独立声明
newArr.concat(arr);
不执行任何操作-您将newArr
与arr
连接起来,创建了一个新的组合数组,但该组合数组没有分配给任何对象;它得到评估,然后被丢弃
const arr1=['a'];
常数arr2=['b'];
//自己不做任何事情:
arr1.concat(arr2);
控制台日志(arr1);
控制台日志(arr2)代码>concat
不会改变任何现有数组(调用函数的数组或参数列表中的数组)。调用concat
时,返回一个新数组。因此,独立声明
newArr.concat(arr);
不执行任何操作-您将newArr
与arr
连接起来,创建了一个新的组合数组,但该组合数组没有分配给任何对象;它得到评估,然后被丢弃
const arr1=['a'];
常数arr2=['b'];
//自己不做任何事情:
arr1.concat(arr2);
控制台日志(arr1);
控制台日志(arr2)代码>concat方法返回一个新数组,所以您需要保存在同一个变量或另一个变量中。就你而言:
var globalArray = [5, 6, 3, 2, 9];
function nonMutatingSort(arr) {
// Add your code below this line
let newArr = [];
newArr = newArr.concat(arr); //here it will return new new which you need to save
return newArr.sort(function(a,b){return a-b;});
// Add your code above this line
}
nonMutatingSort(globalArray);
concat方法返回一个新数组,所以您需要保存在同一个变量或另一个变量中。就你而言:
var globalArray = [5, 6, 3, 2, 9];
function nonMutatingSort(arr) {
// Add your code below this line
let newArr = [];
newArr = newArr.concat(arr); //here it will return new new which you need to save
return newArr.sort(function(a,b){return a-b;});
// Add your code above this line
}
nonMutatingSort(globalArray);
我认为一旦你把{}
放进去,你就必须使用return
语句。试试第二个:{return a-b}
我输入了code,但没有复制粘贴,谢谢。已编辑。如果有帮助,请向上投票。谢谢。。slice()
通常用于浅层复制数组。我认为,一旦放置{}
,您必须使用return
语句。试试第二个:{return a-b}
我输入了code,但没有复制粘贴,谢谢。已编辑。如果有帮助,请向上投票。谢谢。。slice()
通常用于浅拷贝数组