查找数组中的下一个元素,如果最新的先去
Find next element in array, if latest go first
如何获得数组中的下一个元素,但是,如果是最新的,则转到数组中的第一个可用元素
[1,2,3,4,5].find(3) => 4
[1,2,3,4,5].find(5) => 1
[1,2,4,5].find(3) => 4
[1,2,4,5].find(0) => 1
看起来很简单,只是一个简单的循环:
console.log('[1,2,3,4,5].find(3) =>', findNumber([1,2,3,4,5], 3));
console.log('[1,2,3,4,5].find(5) =>', findNumber([1,2,3,4,5], 5));
console.log('[1,2,4,5].find(3) =>', findNumber([1,2,4,5], 3));
console.log( '[1,2,4,5].find(0) =>', findNumber([1,2,4,5], 0));
function findNumber(array, numberToFind) {
for (var i=0;i<array.length;i++) {
if (array[i] > numberToFind) {
return array[i];
}
}
return array[0]
}
您可以创建函数,首先检查数字是否在数组中,如果是,则返回下一个元素,否则使用while
循环递增到下一个数字并返回它。
function findNumber(ar, num) {
var i = ar.indexOf(num);
if (i != -1) {
return (i != ar.length - 1) ? ar[i + 1] : ar[0];
} else {
while (true) {
if (num > Math.max.apply(null, ar) || num < Math.min.apply(null, ar)) return ar[0];
if (ar.indexOf(num) != -1) {
return num;
} else {
num++
}
}
}
}
console.log(findNumber([1, 2, 3, 4], 2))
console.log(findNumber([1, 2, 4, 5], 3))
console.log(findNumber([1, 2, 5], 6))
console.log(findNumber([1, 2, 5], 0))
相关文章:
- 如果 a 为 false,则 if(a) === if(false)
- RegEx删除空属性?例如,如果(class=“”||class=“”)移除;否则就下课
- 如何在angularJS中编辑时,如果DB中的值为true,则设置复选框,如果值为false,则取消选中复选框
- 如果使用 lodash 将属性存在于另一个对象中,则向对象添加属性
- 如果文本字段为空,则使用JavaScript应用CSS样式
- jQuery-2.1.1.min.js或最新版本jQuery-2.13.min.js不会't支持'@
- 如果我在javascript中输入无效的电子邮件或空白,如何显示特定的文本框边框红色
- 如果href包含X,请更改href
- 如果localstorage为空,则显示欢迎消息
- 点击后隐藏潜水?(但如果Div是一面旗帜呢?)
- addData()从最新图表中删除.js 2.1.3-怎么了
- 如果元素's的ID以数字开头
- Jquery表单验证插件-如果选中复选框,如何在提交时执行某些操作
- Jquery模板,如果xx&&如果yy
- 如果值为空,如何设置输入的默认值?jQuery
- 如果选中了多个复选框,如何添加事件
- 为什么jQuery 1.8不能在IE8和InternetExplorer9中使用?(截至2012年9月的IE9最新版本)
- 如果填写了第二个输入(最新)字段,则禁用输入字段
- 如果最新关闭,则在第一个折叠
- 查找数组中的下一个元素,如果最新的先去