gpt4 book ai didi

javascript - 检查数组值是升序还是降序

转载 作者:行者123 更新时间:2023-11-29 16:02:50 25 4
gpt4 key购买 nike

我需要遍历数组的值并判断数组值是升序、降序还是两者都不是。这是我目前拥有的,但我无法弄清楚我做错了什么?

我看到了一种不同的方法来解决这个问题,但我确信我正朝着正确的方向前进,并且由于我正在学习,所以我想继续按照我当前的逻辑进行探索。谢谢!

function ascDscArray(array) {
for (var i=1; i < array.length-1; i++) {
if (array[i-1] < array[i]) return "yes, ascending";
if (array[i-1] > array[i]) return "yes, descending";
else return "no";
}
}

注意:这是我尝试使用 [15, 7, 3, -8][4, 2, 30] 测试的两个示例数组.

最佳答案

您可以预先检查两个元素并选择一个比较函数并使用Array#every 检查所有元素。 .如果前一个元素和实际元素与预期顺序不匹配,这允许使用短路。

然后返回订单或消息的类型,即数组未排序。

function check(array) {
var direction = array[0] < array[1]
? { type: 'asc', fn: (a, b) => a < b }
: { type: 'desc', fn: (a, b) => a > b };

return array.every((v, i, a) => !i || direction.fn(a[i - 1], v))
? direction.type
: 'no';
}

console.log([[15, 7, 3, -8], [4, 2, 30], [1, 2, 3]].map(check));

一个版本,它使用给定的代码并将第一个元素与所有后续元素进行比较。为了存储方向,使用了两个变量并根据条件进行了更新。

稍后检查两个变量是否为 true,然后返回 'no' 或方向。

缺点:它会遍历所有元素

function ascDscArray(array) {
var asc = false, desc = false;
for (var i = 1; i < array.length; i++) {
if (array[0] < array[i]) {
asc = true;
}
if (array[0] > array[i]) {
desc = true;
}
}
if (asc && desc) return 'no';
return asc ? 'asc' : 'desc';
}

console.log([[15, 7, 3, -8], [4, 2, 30], [1, 2, 3]].map(ascDscArray));

关于javascript - 检查数组值是升序还是降序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49805056/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com