我收到了一個陣列,其中包含以 5 為增量的元素;我需要洗掉的第三和第四個元素。
我在兩個獨立的 for 回圈中有一個可行的解決方案,但我覺得必須有更好或更簡潔的方法來做到這一點......有什么想法嗎?
const arr = ["good","good","bad","bad","good","good","good","bad","bad","good",];
// remove every 3rd of 5 elements
for (let i = 2; i <= arr.length; i = 4) {
arr.splice(i, 1);
}
// remove every 3rd of 4 elements
for (let i = 2; i <= arr.length; i = 3) {
arr.splice(i, 1);
}
console.log(arr)
// expected output ["good","good","good","good","good","good"]
uj5u.com熱心網友回復:
您可以通過洗掉 2 個元素而不是 1 個元素在單個回圈中執行此操作。
const arr = Array(50).fill(["good", "good", "bad", "bad", "good"]).flat()
// remove every 3rd of 5 elements
for (let i = 2; i <= arr.length; i = 3) {
arr.splice(i, 2);
}
console.log(arr);
uj5u.com熱心網友回復:
如果可以接受創建新陣列,我將采用以下方式:
const array = ["good", "good", "bad", "bad", "good", "good", "good", "bad", "bad", "good", ];
var result = [];
const disallowedIndices = [2, 3];
for (let i = 0; i < array.length; i ) {
const normalizedIndex = i % 5;
if (!disallowedIndices.includes(normalizedIndex)) {
result.push(array[i]);
}
}
console.log(result);
或者如果你想讓它更花哨一點:
const array = ["good","good","bad","bad","good","good","good","bad","bad","good",];
var reduceFunction = (filteredArray, currentElement, index) => {
const normalizedIndex = index % 5;
const disallowedIndices = [2, 3];
if (!disallowedIndices.includes(normalizedIndex))
{
filteredArray.push(currentElement);
}
return filteredArray;
}
var result = array.reduce(reduceFunction, []);
console.log(result);
它使解決方案更加通用,允許將來輕松修改過濾引數。
uj5u.com熱心網友回復:
您可以使用陣列過濾器原型過濾掉 3 & 4 索引
const arr = Array(50).fill(["good", "good", "bad", "bad", "good"]).flat()
const disAllowedIndex=[2,3]
const filteredArray=arr.filter((item,index)=>!disAllowedIndex.some(i=>i==index%5))
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/494991.html
標籤:javascript 打字稿
上一篇:TypeScript中的映射型別
下一篇:添加三元運算子而不是條件
