条件:您将获得一组数字。您需要按升序对奇数进行排序,而将偶数保留在原来的位置。
function sortArray(array) {
const odd = array.filter((x) => x % 2).sort((a,b) => a - b);
return array.map((x) => x % 2 ? odd.shift() : x);
}
console.log( sortArray([5, 3, 2, 8, 1, 4]) );
odd.shift()
解释一下这段代码是如何工作的,它做了什么,我知道,但我特别对我们删除 1 个元素的行部分感兴趣。来自数组odd
,但这如何改变我们的array
.如何以及什么根据需要移动数组中的元素?
这很简单。该方法从数组中
shift()
删除第一个元素并返回其值。这就是这里发生的情况:filter
奇数,对它们进行排序sort
并将它们放入一个数组中odd
array
然后我们使用再次遍历原始数组map
,同时执行以下操作:x
,我们按原样返回它x
,我们返回数组中的下一个数字odd
(odd.shift()
即已经按排序顺序)这不会以任何方式改变原始数组;它会形成一个新数组,该数组在函数处理
array
后从函数返回。return
array
map