我有一個數字陣列,可以是1或的值0。我需要創建一個函式來檢測是否存在一個實體,其中有一個連續的實體,并且在該實體之外不存在1其他實體,回傳else1truefalse
所以總結一下,這里有一個更清晰的關于 return 約束的視圖true:
- 必須只有一組連續的
1 1除了該連續的一個實體之外,不得有其他1
測驗用例:
[0, 0, 1, 1, 0, 0] true
[1, 0, 1, 0, 0, 0] false
[1, 0, 1, 1, 0, 0] false
[1, 1, 0, 1, 1, 0] false
[0, 1, 1, 1, 1, 0] true
[0, 0, 1, 1, 1, 1] true
uj5u.com熱心網友回復:
function hasOneRun(arr) {
let switches = 0;
for (let i = 0; i < arr.length; i ) {
switches = arr[i] ^ arr[i-1];
if (switches > 2) return false;
}
return switches > 0;
}
計算它從 0 切換到 1 或從 1 切換到 0 的次數。arr[i] ^ arr[i-1]僅當值從前一個值更改時才為 1。如果switches最后是0,那么只有0,所以是假的。如果大于 2,則切換到 1,然后切換到 0,然后再切換回 1,因此運行次數過多。
這是一個有趣的單行:D
Math.ceil(arr.reduce((switches, val, i) => switches (val ^ arr[i-1]))) === 1;
uj5u.com熱心網友回復:
這是一個簡單的while回圈。
如果遇到多個連續的 1,它也會停止以避免額外的迭代。
function oneRepeat(array) {
let consecs = 0;
let i = 0;
while(consecs < 2 && i < array.length - 2) {
if (array[i] === 1 && array[i 1] === 1) consecs
}
return consecs === 1;
}
console.log(oneRepeat([0,1,1,0,0,1]))
console.log(oneRepeat([0,1,0,1,0]))
console.log(oneRepeat([1,1,0,0]))
這也可以通過for回圈和break.
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/531059.html
標籤:javascript逻辑
上一篇:遍歷物件陣列時出現TS錯誤
下一篇:如何剪切作為2中陣列值的字串?
