作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
作为更大函数的一部分,我尝试简单地运行检查以查看数组中的值是否“增加” - 例如:
var a = [1,2,3,4,5] // is increasing
var a = [1,4,6,7,36] // is increasing
var a = [1,6,3,6,5] // not increasing
如果前一个值a[previous]小于a[next],则增加。由于某种原因,问题是当它不增加时它不会返回-1。而且,当我学习 JavaScript 时,我的代码似乎比应有的复杂得多。
我的问题:
1.为什么a不能增加时不返回-1?
2. 为什么我的代码对于如此简单的测试来说看起来如此复杂?我错过了什么吗? (也就是说,如果您认为它过于复杂,而我的代码通常就是这样)
编写这样的函数的更好方法是什么?我应该将“测试是否已增加”部分放在单独的函数中吗?如果有人还可以提供有关编写更好、更简单、可读、更干燥的代码的提示,我们将不胜感激:)
var a = [1,2,3,4,5]
var canIncrease = 0; // boolean
// test if already increased
for(i=0;i<a.length;i++) {
if((a[i] < a[i+1] && i !== a.length-1)||(a[i] > a[i-1] && i==a.length-1)) {
console.log('index ' + i + ' cannot increase');
} else {
console.log('index ' + i + ' can increase');
canIncrease = 1;
}
}
if (!canIncrease) {
console.log('array a cannot increase');
return -1;
} else {
console.log('would continue');
// continue with main function...
}
最佳答案
您可以使用 every()
并在该元素是最后一个元素或小于下一个元素时返回 true。
function func(arr) {
return arr.every((o, i, a) => (i + 1) === a.length || o < a[i + 1] );
}
console.log(func([1, 2, 3, 4, 5]));
console.log(func([1, 4, 6, 7, 36]));
console.log(func([1, 6, 3, 6, 5]));
文档:every()
关于javascript - 返回不工作且过于复杂的代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50972620/
我是一名优秀的程序员,十分优秀!