Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 检查数组是否为单调序列_Javascript_Arrays - Fatal编程技术网

Javascript 检查数组是否为单调序列

Javascript 检查数组是否为单调序列,javascript,arrays,Javascript,Arrays,如果给定的数组是单调序列,我想返回true。这就是我目前所处的位置,但此函数无法正常工作: var isMonotone = function (arr) { return arr.reduce(function (previousValue, currentValue) { return previousValue <= currentValue; }); }; var isMonotone=功能(arr){ 返回arr.reduce(函数(先前值、当前值){ 返回以前

如果给定的数组是单调序列,我想返回true。这就是我目前所处的位置,但此函数无法正常工作:

var isMonotone = function (arr) {
  return arr.reduce(function (previousValue, currentValue) {
    return previousValue <= currentValue;
  });
};
var isMonotone=功能(arr){
返回arr.reduce(函数(先前值、当前值){

返回以前的值您可以使用
每一个
,就像这样(只需将
[1,2,3,4]
替换为
arr


您需要根据是否要检查单调递减/递增来调整>。

您可以使用
每一个
,就像这样(只需将
[1,2,3,4]
替换为
arr


您需要根据是否要检查单调递减/递增来调整>。

我只需要非常高效地实现此函数(ES6)。 这就是我想到的:

const is_monotonically_decreasing = (array) => {
    const n = array.length
    let i = 1
    while (i < n && array[i] - array[i - 1] < 0) {
        i++
    }
    return i === n
}
常数是单调递减的=(数组)=>{
常数n=array.length
设i=1
而(i
这节省了第一次迭代和使用回调(更小的堆栈,更少的内存)。
通过相应地调整
array[i]-array[i-1]<0
可以改变行为。

我只需要非常高效地实现此函数(ES6)。 这就是我想到的:

const is_monotonically_decreasing = (array) => {
    const n = array.length
    let i = 1
    while (i < n && array[i] - array[i - 1] < 0) {
        i++
    }
    return i === n
}
常数是单调递减的=(数组)=>{
常数n=array.length
设i=1
而(i
这节省了第一次迭代和使用回调(更小的堆栈,更少的内存)。
通过相应地调整
array[i]-array[i-1]<0
可以改变行为。

JavaScript一行解决方案:

排序与联接
var isMonotonic=(arr)=>{
返回(
arr.join`=[…arr].sort((a,b)=>a-b)。join`||
arr.join`=[…arr].sort((a,b)=>b-a.join``
);
};
log(isMonotonic([8,4,2,1]);
log(isMonotonic([8,0,5,1]);

log(Ismononic([7,7,7]);
JavaScript一行程序解决方案:

排序与联接
var isMonotonic=(arr)=>{
返回(
arr.join`=[…arr].sort((a,b)=>a-b)。join`||
arr.join`=[…arr].sort((a,b)=>b-a.join``
);
};
log(isMonotonic([8,4,2,1]);
log(isMonotonic([8,0,5,1]);

log(isMonotonic([7,7,7]);
当您在if语句中返回时,不需要使用else。这会不会导致第一个元素总是返回未定义的(不管它是小还是大)?例如,我的答案中的示例将返回false,而它应该返回true。干杯!我的意思是,您只需在if语句之后使用
return true;
,无需将其放在其他语句中。这对我很有效。我确实必须将运算符调整为>=尽管。谢谢大家!顺便问一下,“if(i)”是什么意思如果在if语句中有return,则不需要使用else。这是否会导致第一个元素总是返回undefined(无论其大小)?例如,我的答案中的示例将返回false,而它应该返回true。干杯!我的意思是,您只需在if语句之后使用
return true;
,无需将其放在其他语句中。这对我很有效。我确实必须将运算符调整为>=尽管。谢谢大家!顺便问一下,“if(i)”是什么意思我用
console尝试了你的
isMonotone
函数。对每个
previousValue
currentValue
使用log
函数,发现第二次迭代中的
previousValue
true
我用
console尝试了你的
isMonotone
函数。对每个
previousValue使用log
currentValue
并发现第二次迭代中的
previousValue
true