在 JavaScript 中重新排列数组元素
问题
JavaScript函数,它接受文字数组arr作为第一个也是唯一的参数。此数组包含一些相邻放置的重复项。
我们的函数应该重新排列数组的元素,使得数组中没有两个元素是相等的。我们的函数应该返回重新排列的数组,因为可以保证至少存在一种这样的排列方式。
例如,如果函数的输入是-
const arr = [7, 7, 7, 8, 8, 8];
那么输出应该是-
const output = [7, 8, 7, 8, 7, 8];
输出说明:
也可能有其他正确的可能重排。
示例
此代码将是-
const arr = [7, 7, 7, 8, 8, 8];
const rearrangeArray = (arr = []) => {
const map = arr.reduce((acc, val) => {
acc[val] = (acc[val] || 0) + 1 return acc;
}, {});
const keys = Object.keys(map).sort((a, b) => map[a] - map[b]);
const res = [];
let key = keys.pop();
for(let i = 0; i < arr.length; i += 2){
if(map[key] <= 0){
key = keys.pop();
};
map[key] -= 1;
res[i] = Number(key);
};
for(let i = 1; i < arr.length; i += 2){
if(map[key] <= 0){
key = keys.pop();
};
map[key] -= 1;
res[i] = Number(key);
};
return res;
};
console.log(rearrangeArray(arr));输出结果控制台中的输出将是-
[ 8, 7, 8, 7, 8, 7 ]
热门推荐
10 诗词送行祝福语大全简短
11 新房开工吉日祝福语简短
12 50多岁生日简短祝福语
13 安徽疫情祝福语简短英语
14 农民朋友发财祝福语简短
15 对生活祝福语简短精辟
16 搬家词简短祝福语朋友
17 女神结婚快乐祝福语简短
18 文学短句祝福语大全简短