use*_*006 3 javascript arrays sorting modulus
我想只排序奇数而不移动偶数.例如,当我写:
sortArray([5, 3, 2, 8, 1, 4])
Run Code Online (Sandbox Code Playgroud)
预期的结果是:
[1, 3, 2, 8, 5, 4]
Run Code Online (Sandbox Code Playgroud)
我是JavaScript的新手,我在互联网上遇到了让我感到困惑的挑战.我通常不会在互联网上发帖要求解决方案,但我已经尝试了几个小时,我想用JavaScript学习这个概念.
挑战表明:
你有一系列数字.你的任务是对升序奇数进行排序,但偶数必须在他们的位置.零不是奇数,你不需要移动它.如果您有一个空数组,则需要返回它.
这是我的代码到目前为止,请放轻松我,我正处于编程的开始阶段.
function sortArray(array) {
let oddNums = [];
for(let i = 0; i < array.length; i++) {
if(array[i] % 2 !== 0) {
oddNums.push(array[i]);
}
}
oddNums = oddNums.sort((a,b)=> a-b);
array.concat(oddNums);
array = array.sort((a,b) => a-b);
return array;
}Run Code Online (Sandbox Code Playgroud)
这是一个主要使用内置数组方法的解决方案。获取仅包含赔率的列表,对其进行排序,然后映射到原始项,如果项目为奇数,则将每个项目替换为第一个排序的奇数,如果为偶数,则替换为自身:
const array = [5, 3, 2, 8, 1, 4] // to: [1, 3, 2, 8, 5, 4]
function sortOddsOnly(arr) {
const odds = arr
.filter(x => x%2)
.sort((a, b) => a - b);
return arr
.map(x => x%2 ? odds.shift() : x);
}
console.log(sortOddsOnly(array));Run Code Online (Sandbox Code Playgroud)
您可以为奇数索引获取辅助数组,为奇数索引获取另一个数组,对它们进行排序并将它们应用于先前存储的原始数组索引.
var array = [5, 3, 2, 8, 1, 4],
indices = [];
array
.filter((v, i) => v % 2 && indices.push(i))
.sort((a, b) => a - b)
.forEach((v, i) => array[indices[i]] = v);
console.log(array);Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3308 次 |
| 最近记录: |