JavaScript中如何移除数组内指定数值1、2、7、14?
移除数组中指定数值的实现方案
嘿,这事儿不难,我给你几个常用编程语言的实现方案,你挑适合自己的来!核心思路都是:先把要移除的数值存进一个集合(查找效率更高),然后过滤掉数组里属于这个集合的元素就行。
JavaScript 实现
用数组的filter方法配合Set来做,简洁又高效:
// 你的原始数组 const originalArray = [1, 3, 2, 5, 7, 14, 8]; // 要移除的数值集合 const valuesToRemove = new Set([1, 2, 7, 14]); // 过滤得到新数组 const filteredArray = originalArray.filter(item => !valuesToRemove.has(item)); console.log(filteredArray); // 输出: [3, 5, 8]
用Set是因为它的查找速度比数组快很多,尤其是数组元素多的时候,性能差异会很明显。如果只是简单场景,直接用数组判断!valuesToRemove.includes(item)也能行,但Set更推荐。
Python 实现
Python里用列表推导式最直观,同样搭配集合提升效率:
# 原始数组 original_array = [1, 3, 2, 5, 7, 14, 8] # 要移除的数值集合 values_to_remove = {1, 2, 7, 14} # 推导式生成新数组 filtered_array = [item for item in original_array if item not in values_to_remove] print(filtered_array) # 输出: [3, 5, 8]
列表推导式是Python里处理这类场景的标配,代码短可读性还强,集合的作用和前面一样,优化查找性能。
Java 实现
Java可以用Stream API快速生成新数组,或者用removeIf直接修改原列表:
import java.util.ArrayList; import java.util.Arrays; import java.util.HashSet; import java.util.List; import java.util.Set; public class ArrayFilterExample { public static void main(String[] args) { List<Integer> originalList = new ArrayList<>(Arrays.asList(1, 3, 2, 5, 7, 14, 8)); Set<Integer> valuesToRemove = new HashSet<>(Arrays.asList(1, 2, 7, 14)); // 方法1:生成新列表(不修改原列表) List<Integer> filteredList = originalList.stream() .filter(item -> !valuesToRemove.contains(item)) .toList(); System.out.println(filteredList); // 输出: [3, 5, 8] // 方法2:直接修改原列表 originalList.removeIf(valuesToRemove::contains); System.out.println(originalList); // 输出: [3, 5, 8] } }
如果不需要保留原列表,removeIf方法一步到位很方便;要是需要原列表不变,就用Stream生成新的。
不管用哪种语言,核心逻辑都是过滤掉指定值,用集合存要移除的值是为了让查找更快,尤其是当数组很大的时候,这个优化会很有用。
内容的提问来源于stack exchange,提问作者wierrr
相关产品推荐
相关产品推荐

