繁体   English   中英

删除数组中特定数量的元素

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM