JavaScript多数组元素删除、Ruby指定值数组元素删除方法问询
1. Removing Multiple Elements from a JavaScript Array
There are a few solid approaches depending on whether you want to keep the original array intact (immutable) or modify it directly (mutable):
Immutable Approach (Recommended for Most Cases)
Use filter() to create a new array excluding the elements you don't want. This avoids side effects and is easier to reason about:
const originalArray = [1, 2, 3, 4, 5]; const elementsToRemove = new Set([2, 5]); // Using Set for faster lookups const filteredArray = originalArray.filter(item => !elementsToRemove.has(item)); // Result: filteredArray = [1, 3, 4], originalArray stays the same
Mutable Approach (Modify Original Array)
If you need to change the original array, use splice()—but iterate backwards to avoid skipping elements (since splice shifts indices):
const arr = [1, 2, 3, 4, 5]; const elementsToRemove = [2, 5]; for (let i = arr.length - 1; i >= 0; i--) { if (elementsToRemove.includes(arr[i])) { arr.splice(i, 1); // Remove 1 element at index i } } // Result: arr = [1, 3, 4]
Another immutable option is reduce(), which builds a new array incrementally:
const original = [1, 2, 3, 4, 5]; const exclude = new Set([2, 5]); const newArray = original.reduce((acc, curr) => { if (!exclude.has(curr)) acc.push(curr); return acc; }, []);
2. Removing Elements from Arrays in Ruby
Let's break this down into your two specific scenarios:
Scenario 1: Remove Specified Values from a Numeric Array
For your array [2,4,6,3,8]:
To remove all occurrences of a single value, use
delete():nums = [2,4,6,3,8] nums.delete(6) # Removes all 6s, nums becomes [2,4,3,8]To remove multiple specified values, use
reject(returns a new array) ordelete_if(modifies the original):nums = [2,4,6,3,8] values_to_remove = [6, 3] # New array (original remains unchanged) filtered_nums = nums.reject { |num| values_to_remove.include?(num) } # Modify original array directly nums.delete_if { |num| values_to_remove.include?(num) } # Result: nums = [2,4,8]
Scenario 2: Remove a Specific Hash from an Array of Hashes
For your hash array [{x: "69", y: "104"},{x: "69", y: "109"},{x: "69", y: "300"}], to delete the hash where x == "69" and y == "109":
Use reject (new array) or delete_if (mutate original):
hash_array = [{x: "69", y: "104"}, {x: "69", y: "109"}, {x: "69", y: "300"}] # Get a new filtered array filtered_hashes = hash_array.reject { |h| h[:x] == "69" && h[:y] == "109" } # Or modify the original array hash_array.delete_if { |h| h[:x] == "69" && h[:y] == "109" } # Result in both cases: [{x: "69", y: "104"}, {x: "69", y: "300"}]
内容的提问来源于stack exchange,提问作者Frans Suny

