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