所以..我正在做一些事情,我需要知道一组有序的数字是否有任何“提升”,或者换句话说,不是按完全降序排列的。
如果我有 [3,2,1]
,它应该返回 false,而对于这些数字的任何其他顺序,它应该返回 true。例如。 [2,3,1]
,因为从左到右,海拔在 2 和 3 之间。
我使用以下小功能:
function hasElevation(digits) {
return digits.slice().sort().reverse().toString() !== digits.toString();
}
我的问题是,是否有更有效的方法来做到这一点?
请使用 Vanilla JS!
更新:添加了用例
hasElevation([3,5,4]); // true
hasElevation([3,4,4]); // true
hasElevation([1]); // false
hasElevation([1,1]); // false
hasElevation([5,4,3]); // false
最佳答案
您可以使用 Array#some
查看对于每个元素和前一个元素。
function hasElevation(digits) {
return digits.some(function (a, i, aa) {
return aa[i - 1] < a;
});
}
console.log(hasElevation([3, 5, 4])); // true
console.log(hasElevation([3, 4, 4])); // true
console.log(hasElevation([1])); // false
console.log(hasElevation([1, 1])); // false
console.log(hasElevation([5, 4, 3])); // false
ES6
var hasElevation = digits => digits.some((a, i, aa) => aa[i - 1] < a);
console.log(hasElevation([3, 5, 4])); // true
console.log(hasElevation([3, 4, 4])); // true
console.log(hasElevation([1])); // false
console.log(hasElevation([1, 1])); // false
console.log(hasElevation([5, 4, 3])); // false
关于javascript - 数字数组中的任何一点是否有高程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39267516/