有件事我可以';Javascript映射函数的代码中没有理解

有件事我可以';Javascript映射函数的代码中没有理解,javascript,Javascript,下面的代码中有一些我不明白的地方。这就是map(c=>c)的位置 我认为我不需要处理map(c=>c),有什么原因吗 sortedArray(){ 返回数组 .map(c=>c) .sort((x,y)=>this.otherSortMethod(x,y)); } 其他方法(x,y){ 如果( `${x.date}${x.time}`=== `${y.date}${y.time}` ) 返回0; 如果( `${x.date}${x.time}`> `${y.date}${y.time}` ) 返

下面的代码中有一些我不明白的地方。这就是map(c=>c)的位置

我认为我不需要处理map(c=>c),有什么原因吗

sortedArray(){
返回数组
.map(c=>c)
.sort((x,y)=>this.otherSortMethod(x,y));
}
其他方法(x,y){
如果(
`${x.date}${x.time}`===
`${y.date}${y.time}`
)
返回0;
如果(
`${x.date}${x.time}`>
`${y.date}${y.time}`
)
返回1;
返回-1;
}
在JS中,
Array.map()
函数在对原始数组(完整文档:)中的每个元素执行回调操作后返回一个新数组。在您的示例中,您只需在
.map()
的回调中返回每个原始元素(无需对其应用任何操作),因此,在
.map()
完成迭代时返回原始数组的副本。

在JS中,
数组.map()
函数在对原始数组(完整文档:)中的每个元素执行回调操作后返回一个新数组。在您的示例中,您只需在
.map()
的回调中返回每个原始元素(不对其应用任何操作),因此,在
.map()
完成迭代时返回原始数组的副本。

somearray.map()
函数将返回一个新数组(克隆)

somearray.sort()
函数将对现有数组进行排序(mutate)

因此,如果您直接使用
somearray.sort((x,y)=>this.otherSortMethod(x,y))您正在变异/修改现有数组。这会导致副作用。因为您不持有原始数组的任何引用/副本

当您使用
somearray.map().sort()
时,您将拥有一个新的克隆、排序+原始的数组

编辑:

您没有在map回调函数中执行任何操作,因此它将按原样返回元素。下面是相同的等效代码

sortedArray(){
让SorterDarray=[…somearray]
sortedArray.sort((x,y)=>this.otherSortMethod(x,y));
返回至Darray;
}
somearray.map()
函数将返回一个新数组(克隆)

somearray.sort()
函数将对现有数组进行排序(mutate)

因此,如果您直接使用
somearray.sort((x,y)=>this.otherSortMethod(x,y))您正在变异/修改现有数组。这会导致副作用。因为您不持有原始数组的任何引用/副本

当您使用
somearray.map().sort()
时,您将拥有一个新的克隆、排序+原始的数组

编辑:

您没有在map回调函数中执行任何操作,因此它将按原样返回元素。下面是相同的等效代码

sortedArray(){
让SorterDarray=[…somearray]
sortedArray.sort((x,y)=>this.otherSortMethod(x,y));
返回至Darray;

}
它在排序之前复制数组。但是,通常的复制方法是使用
arr.slice()
在排序之前复制数组。但是,制作副本的常用方法是使用
arr.slice()