[js] 第546天 写一个方法判断一组数字是连值
Opened this issue · 7 comments
haizhilin2013 commented
Sczlog commented
const isSerial = (arr) => {
for (let i = 1; i < arr.length; i++) {
if (Math.abs(arr[i] - arr[i - 1]) !== 1 && !(arr[i] === 9 && arr[i - 1] === 0) && !(arr[i] === 0 && arr[i - 1] === 9)) {
return false;
}
}
return true;
}
L-T-G commented
var judge = value => {
var flag = 0;
for(var i=0 ,length = value.length;i<length;i++)
{
if(value[i+1])
{
res = value[i+1] - value[i];
if(res == 1 || res == -9) {flag++;}
}
else {break;}
}
if(flag==i){ return true;}
else{return false;}
}
glimmerHa commented
function isSerial(arr){
var length = arr.length;
if(length ===0 || length === 1){
return true
}else {
while(length>=2){
if(arr[length-1] - arr[length-2] !== 1 && arr[length - 1] - arr[length-2] !== -9){
return false
}
length--
}
return true
}
}
shronwang commented
function isSerial(arr) {
for(let i = 0; i < arr.length-1; i++) {
if(arr[i+1] != (arr[i] + 1)%10) return false;
}
return true;
}
fwt-1025 commented
// 可判断的连值类型如下: '0123456789012' [9,0,1,2,3] [-9,0,-1,-2,-3,-4] '98765432109' [-2,-1,0,-9,-8,-7]
function toArray (data) {
return Array.from(data)
}
function isSeries(data) {
if (!Array.isArray(data)) {
data = toArray(data)
}
if (!data.length) return false // 没有数据直接返回false
let srData = data.slice(0, data.length - 1)
return srData.every((item, index) => {
if (Math.abs(item) == 9 && (data[index + 1] == 0 || data[index - 1] == 0)) return true
if (Math.abs(item) == 0 && (Math.abs(data[index + 1]) == 9 || Math.abs(data[index - 1]) == 9)) return true
if (index === srData.length) {
return 1 === Math.abs(data[data.length] - item)
}
return 1 === Math.abs(data[index + 1] - item)
})
}
ChobitsSP commented
[1,2,3,4,5].every((t, i, arr) => i === 0 || (t - arr[i - 1] === 1 || arr[i - 1] - t === 9));
OldSixLi commented
function testArr(arr) {
let min=arr[0]
return arr.every((item,index)=> item===(min+index)%10)
}