[英]Remove a specific amount of elements in the array
我想指定要在该数组中删除多少个1
元素:
const array = [1, 1, 2, 3, 1, 5];
我试过这样:
const array = [1, 1, 2, 3, 1, 5];
const i = array.indexOf(1);
if (i > - 1) {
array.splice(i, 1);
}
但这仅删除数组中的第一个元素1
试试这个, Array.prototype.filter
将创建一个新数组,并且不会改变或更改调用它的数组。
const arr = [1, 1, 2, 3, 1, 5]; const newArr = arr.filter((item) => item !== 1); console.log(newArr); const removeArrayItem = (array, item) => array.filter((i) => i !== item); console.log(removeArrayItem([1, 2, 2, 2, 2, 3, 4, 5], 2)); console.log(removeArrayItem([1, 2, 2, 2, 2, 3, 4, 5, 6, 7, 8, 8, 8], 8)); // or using reduce const removeDuplicateItem = (arr, itemToRemove, count) => arr.reduce( (accumulator, currentItem) => { if ( accumulator.count && accumulator.count > 0 && currentItem === itemToRemove ) { accumulator.count -= 1; return accumulator; } accumulator.result.push(currentItem); return accumulator; }, { count, result: [], }, ).result; // This will remove 5 number twos console.log(removeDuplicateItem([1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 4, 5, 6, 7, 8, 8, 8], 2, 5));
您可以使用while
循环删除具有此值的 N 个元素:
const removeNInstancesOfX = (array, n, x) => { let i = null, count = 0, arr = [...array]; while ((i = arr.indexOf(1)) !== -1 && count++ < n) arr.splice(i, 1); return arr; } let array = [1, 1, 2, 3, 1, 5]; array = removeNInstancesOfX(array, 2, 1); console.log(...array);
您需要迭代计数并检查项目是否可用于删除。
function remove(array, value, count) { while (count--) { const i = array.indexOf(value); if (i === -1) break; array.splice(i, 1); } } const array = [1, 1, 2, 3, 1, 5]; remove(array, 1, 2); console.log(array);
如果您只想删除您指定的1
秒数量,
您可以使用具有 2 个条件的 for 循环,一个用于数组大小,第二个用于找到和删除1
的次数。
const array = [1, 1, 2, 3, 1, 5]; const counter = 2; for(let i = 0 , n = 0; i < array.length && n < counter; i++) { if(array[i] === 1) { array.splice(i, 1); i -= 1; n++; } } console.log(array);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.