Reputation: 353
I have an array with value, [0,3,4,6,0]
, How do I validate if the before values is less than the after values?
var array = [0,3,4,6,0];
for(var i = 0; i < array.length; i++){
//if the value of 0 >,3 >,4, > 6
//return false;
}
I need to require the user to enter an ordered sequence of numbers like 5, 4, 3, 2, 1
. Hence, I need to validate if the enter is not in an ordered sequence.
Upvotes: 2
Views: 4992
Reputation: 9984
Iterate all the array, expect true until you reach a false, where you can break out of the loop.
function ordered(array) {
var isOk = true; // Set to true initially
for (var i = 0; i < array.length - 1; i++) {
if (array[i] > array[i + 1]) {
// If something doesn't match, we're done, the list isn't in order
isOk = false;
break;
}
}
document.write(isOk + "<br />");
}
ordered([]);
ordered([0, 0, 0, 1]);
ordered([1, 0]);
ordered([0, 0, 0, 1, 3, 4, 5]);
ordered([5, 0, 4, 1, 3, 4]);
Upvotes: 2
Reputation: 4598
What you can do is to loop the array and compare adjacent elements like this:
var isOk = false;
for (var i = 0; i < array.length - 1; i++) {
if (array[i] > array[i+1]) {
isOk = true;
break;
}
}
Thus flag isOk
will ensure that the whole array is sorted in descending order.
Upvotes: 1
Reputation: 23492
A possible solution in ES5 using Array#every
function customValidate(array) {
var length = array.length;
return array.every(function(value, index) {
var nextIndex = index + 1;
return nextIndex < length ? value <= array[nextIndex] : true;
});
}
console.log(customValidate([1, 2, 3, 4, 5]));
console.log(customValidate([5, 4, 3, 2, 1]));
console.log(customValidate([0, 0, 0, 4, 5]));
console.log(customValidate([0, 0, 0, 2, 1]));
Upvotes: 4
Reputation: 757
function inOrder(array){
for(var i = 0; i < array.length - 1; i++){
if((array[i] < array[i+1]))
return false;
}
return true;
}
Upvotes: 1