javascript - 使用 Javascript/ES 以交替的负数和正数排列数组
问题描述
我正在尝试安排一个数组
[1,4,7,6,8,-1,-4,-5,8]
喜欢
[-1,1,-4,4,-5,7,6,8,8]
如何使用 JavaScript 做到这一点?我想到了使用 map 函数制作正数数组和负数数组并将它们一一合并。但是我在合并它们时遇到了麻烦。
let arr = [1,4,7,6,8,-1,-4,-5,8];
let positiveArr = arr.map((a) => a >= 0);
let negativeArr = arr.map((a) => a < 0);
final_arr = negativeArr.map(function(v,i) { return [v, positiveArr[i]]; });
console.log(final_arr)
解决方案
您可以将所有正数过滤到一个数组中,将所有负数过滤到一个数组中。之后,将负数和正数交替推入一个新数组。
const arr = [-1,1,-4,4,-5,7,6,8,8];
const positive = arr.filter(x=>x>=0);
const negative = arr.filter(x=>x<0);
const res = [];
for(let i = 0, j = 0; i < positive.length || j < negative.length; i++, j++){
if(j < negative.length) res.push(negative[i]);
if(i < positive.length) res.push(positive[i]);
}
console.log(res);
推荐阅读
- java - Flux 中的内存泄漏,但在哪里?
- bash - 运行使用 OpenVINO 和 OpenCV 的 Go 程序 - /usr/bin/ld: 找不到 -lXXX
- android - 什么类型的控件可以让初次使用的用户了解应用程序?可以自动化吗?
- python - 如何连接 3D 空间中的散点?
- sql - 需要包含前一行所有值的单行
- react-native - 安装 react-native-push-notification 后无法构建应用程序
- struct - 如何将单个结构复制到 __global__ 内存中?
- uwp - 在 uwp 应用程序中定位 Windows 版本
- angular - RxJS groupBy 对可观察自定义数组的 ngrx 效果
- caching - DNS 预取和预连接:仅适用于非缓存资源?