javascript - Javascript的map函数的代码中有一些我看不懂的地方
问题描述
下面的代码中有一些我不明白的地方。这就是地图(c => c)的地方。
我认为我不需要处理地图(c => c),有什么理由吗?
sortedArray() {
return somearray
.map(c => c)
.sort((x, y) => this.otherSortMethod(x, y));
}
otherSortMethod(x, y) {
if (
`${x.date} ${x.time}` ===
`${y.date} ${y.time}`
)
return 0;
if (
`${x.date} ${x.time}` >
`${y.date} ${y.time}`
)
return 1;
return -1;
}
解决方案
somearray.map()
函数将返回一个新数组(克隆)。
somearray.sort()
函数将对您现有的数组(变异)进行排序。
所以如果你直接使用somearray.sort((x, y) => this.otherSortMethod(x, y));
你正在改变/修改一个现有的数组。这会导致副作用。因为您没有原始数组的任何引用/副本。
当您使用时,somearray.map().sort()
您将拥有一个新的克隆、排序 + 原始数组。
编辑:
您没有在地图回调函数中执行任何操作,因此它将按原样返回一个元素。下面是相同的等效代码。
sortedArray() {
let sortedArray = [...somearray]
sortedArray.sort((x, y) => this.otherSortMethod(x, y));
return sortedArray;
}