javascript - Javascript将数组外部值排序为内部值
问题描述
我真的不知道如何表达这个问题,这可能是我在谷歌上搜索时没有找到任何东西的原因,所以如果你想重命名这个或将我引导到一个已经做了我想要的帖子非常感激。
无论如何,我想按如下方式对数组进行排序:
let array = [1, 2, 3, 4, 5];
let sorted = array.sort(someFunction);
console.log(sorted); // -> [1, 5, 2, 4, 3]
array = [1, 2, 3, 4];
sorted = array.sort(someFunction);
console.log(sorted); // -> [1, 4, 2, 3]
看看它是如何首先抓取最外层的元素(1 和 5),然后是下一个最近的层(2 和 4),最后是中间的元素(3)?这就是我想要的。
显然,使用Array.sort()
(或类似的单行函数方法)的解决方案是可取的,但此时我将采取任何可以完成此任务的方法。
解决方案
function getValue(arr) {
const result = [];
while (arr.length) {
result.push(arr.shift());
if (arr.length) result.push(arr.pop());
}
return result;
}
let array = [1, 2, 3, 4, 5];
console.log(getValue(array));
2)您也可以使用two-pointer
算法来做到这一点
function getValue(arr) {
const result = [];
let start = 0,
end = arr.length - 1;
while (start < end) result.push(arr[start++], arr[end--]);
if (start === end) result.push(arr[start]);
return result;
}
console.log(getValue([1, 2, 3, 4, 5]));
console.log(getValue([1, 2, 3, 4]));
console.log(getValue([1, 2, 3]));
/* This is not a part of answer. It is just to give the output full height. So IGNORE IT */
.as-console-wrapper { max-height: 100% !important; top: 0; }
推荐阅读
- php - 带有自定义保护的 Laravel 身份验证不起作用
- c - 运行C程序时出现Segmentation Fault错误
- wso2ei - wso2ei 6.6 调度程序自动停止
- python - 具有多个 response.out.write 语句的 Python 方法
- sql - 我有一个名为 records 的表,它的 jsonb 类型的数据列包含以下详细信息。我正在使用 postgres 9.5
- rust - 未找到方法“span”以供参考“&ExprPath”(来自“syn”板条箱)
- python - 从 sympy 的系列中导出所有系数
- javascript - 防止 td 在悬停时移动
- react-native - React Native Hooks 初始化程序没有采用正确的值
- blockchain - 如何更改松露(ganache)的帐户?