我有 2 個陣列
IDList ["01","02","03","04"]
其中包含一些ID的東西。
我有另一個 ID 串列,它告訴 IDList 的哪個元素擁有標志示例
IDLISTPRD["01","02","03","04"]
正如你在這里看到的, IDList 的所有元素都根據 IDLISTPRD 擁有標志
我想檢查此 ID 中的任何一個是否連續有 3 個標志。
我已經做了這個代碼
let eqObj = {};
for (var i = 0; i < IDLISTPRD.length; i ) {
if (IDList.includes(IDLISTPRD[i])) {
eqObj[IDLISTPRD[i]] = IDList.indexOf(IDLISTPRD[i]);
}
}
首先,我正在推送相同的元素(ID)(擁有標志)
根據 2 個陣列,這將回傳 eqObj [ ["01" : 0,"02" : 1,"03" : 2,"04" : 3]]
為了比較它們,我必須對它們進行排序
let objSorted = Object.entries(eqObj ).sort(function (a, b) {
return b[1] - a[1];
});
let flagInRow= 0;
let flagInRowIndicator= true;
for (var i = 0; i < objSorted .length - 1; i ) {
if (objSorted [i][1] - objSorted [i 1][1] == 1) {
flagInRow ;
} else {
flagInRow= 0;
}
if (flagInRow< 2) {
flagInRowIndicator= true;
} else {
flagInRowIndicator= false;
break;
}
}
正如您在此處看到的那樣,flaginRowIndicator 當它在一行中找到 3 個標志時變為真,現在我試圖保持邏輯但洗掉陣列示例的中間元素,如果我有陣列
["1","2","3"]
其中三個有標志我想洗掉中間的一個并回傳一個只有 ["1,"3"]
另一個例子,如果它在一行中有 6 個標志,["1","2","3","4","5","6"]
我只想洗掉 3 行中的中間那些,就像在這種情況下洗掉 2 和 5 并回傳
["1","3","4","6"]
uj5u.com熱心網友回復:
您可以從末尾迭代并拼接陣列。
function removeMiddle(array) {
let i = array.length - 2;
while (i > 0) {
array.splice(i, 1);
i -= 3;
}
return array;
}
console.log(removeMiddle([1, 2, 3]));
console.log(removeMiddle([1, 2, 3, 4, 5, 6]));
uj5u.com熱心網友回復:
嘗試使用過濾方法:
arr.filter((_, index) => (index%3 !==1))
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/366120.html
標籤:javascript
