使用javascript对数组进行排序而不改变空或空的地方
Posted
技术标签:
【中文标题】使用javascript对数组进行排序而不改变空或空的地方【英文标题】:sort array without altering null or empty places using javascript 【发布时间】:2020-08-09 10:26:26 【问题描述】:我有一些长度相等的数组,并且每个数组的随机位置都有四个空值,我需要对这些数字数组进行排序,前提是空值的位置没有改变。
例如,我的数组:
var arr1 = [6, 3, null, 5, null, 4, null, null];
var arr2 = [null, 7, 4, null, 6, null, 5, null];
预期的输出应该是:(不改变空位置)
var arr1 = [3, 4, null, 5, null, 6, null, null];
var arr2 = [null, 4, 5, null, 6, null, 7, null];
请帮助建议或建议以下函数中的一些代码,以便在 javascript 中实现此要求
function sortByNotalterNull(arr)
//somecode here
return arr;
;
sortByNotalterNull(arr1);
【问题讨论】:
【参考方案1】:您可以将一个辅助数组用于非 null
索引,另一个用于数字,对它们进行排序并将它们应用回原始数组的先前存储的索引。
const sort = array =>
let indices = [];
array
.filter((v, i) => v !== null && indices.push(i))
.sort((a, b) => a - b)
.forEach((v, i) => array[indices[i]] = v);
return array;
;
console.log(...sort([6, 3, null, 5, null, 4, null, null]));
console.log(...sort([null, 7, 4, null, 6, null, 5, null]));
【讨论】:
以上是关于使用javascript对数组进行排序而不改变空或空的地方的主要内容,如果未能解决你的问题,请参考以下文章
在 nlog(n) 时间内对整数数组进行排序而不使用比较运算符